题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给两个字符串,和一个整数变量,求一个最长字符串的长度,使得一个字符串变换为另一个(ASCII码差值),变换的总值在那个整数之内。

思路分享

代码解答(强烈建议自行解答后再看)

  • 陆爻齐的解法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
int equalSubstring(string s, string t, int maxCost) {
int curCost = 0;
int left = 0;
int n = t.size();
int ans = 0;
for (int i = 0; i < n; i++) {
curCost += abs(s[i]-t[i]);
if (curCost > maxCost) {
curCost -= abs(s[left]-t[left]);
left++;
}
ans = max(ans, i-left+1);
}
return ans;
}
};