给定字符串A、B和正整数V,A的长度与B的长度相等, 请计算A中满足如下条件的最大连续子串的长度:
1、该连续子串在A和B中的位置和长度均相同。
2、该连续子串|A[i] – B[i]|之和小于等于V。其中|A[i] – B[i]|表示两个字母ASCII码之差的绝对值。
输入 |
|
输出 | 2 |
说明 | 无 |
字符串比较(C++ Java JavaScript Python)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
string strA, strB;
int V;
cin >> strA >> strB >> V;
int N = strA.length();
// 先求出差值的绝对值
vector<int> diffList;
for (int i = 0; i < N; ++i) {
diffList.push_back(abs(strA[i] - strB[i]));
}
int sum = 0, result = 0;
int left = 0, right = 0;
while (right < diffList.size()) {
sum += diffList[right];
if (sum > V) {
while (left <= right && sum > V) {
sum -= diffList[left];
left++;
}
}
result = max(result, right - left + 1);
right++;
}
cout << result << endl;
return 0;
}
#华为##华为机试,emo了##华为od#