当前位置: 首页 > 面试经验 >

字符串比较 --- 刷题记录

优质
小牛编辑
140浏览
2023-03-28

字符串比较 --- 刷题记录

题目描述


给定字符串A、B和正整数V,A的长度与B的长度相等, 请计算A中满足如下条件的最大连续子串的长度:


1、该连续子串在A和B中的位置和长度均相同。


2、该连续子串|A[i] – B[i]|之和小于等于V。其中|A[i] – B[i]|表示两个字母ASCII码之差的绝对值


输入描述



  • 输入为三行:

  • 第一行为字符串A,仅包含小写字符,1 <= A.length <=1000。

  • 第二行为字符串B,仅包含小写字符,1 <= B.length <=1000。

  • 第三行为正整数V,0<= V <= 10000。


输出描述



  • 字符串最大连续子串的长度,要求该子串|A[i] – B[i]|之和小于等于V。


用例


输入

xxcdefg

cdefghi

5

输出2
说明

多语言解法


字符串比较(C++ Java JavaScript Python)


C++


#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#
 类似资料: