LeetCode 833
Find And Replace in String
-
Problem Description:
题目给出四个已知条件:进行操作的字符串S,indexes数组(存储S中需进行替换的位置下标),sources数组(需要匹配S中有indexes数组中下标的子字符串是否与sources中对应子字符串相同),targets数组(如果匹配成功,将S中有indexes数组中下标的子字符串替换为targets中对应的子字符串)
具体的题目信息:
https://leetcode.com/problems/find-and-replace-in-string/description/ - Example: 题目给出的例子如下所示
- Solution:
- 解题思路:
(1)遍历S字符串的每个位置,在indexes数组中查找该位置是否需要进行替换,如果不需要,则将temp += S中对应字符
。
(2)如果S字符串的某个位置在indexes数组中可以查找到,则比较从该起始位置起一段长度的字符串与sources
数组中对应的字符串是否相同,如果不相同不进行替换,temp += S中对应字符串
。如果相同,用targets
数组中对应的字符串替换S
中对应字符串,注意将遍历S
字符串的下标进行相应的移动。 - 编程实现:
- 解题思路:
class Solution {
public:
string findReplaceString(string S, vector<int>& indexes, vector<string>& sources, vector<string>& targets) {
if (indexes.size() == 0)
return S;
string temp = "";
int flag = 0, j;
for (int i = 0; i < S.length(); ) {
for (j = 0;j < indexes.size(); j++) {
if (i == indexes[j]) {
if (S.substr(i, sources[j].length()) == sources[j]) {
temp += targets[j];
} else {
temp += S.substr(i, sources[j].length());
}
flag = 1;
break;
}
}
if (flag == 0) {
temp += S[i];
i++;
} else {
flag = 0;
i+=sources[j].length();
}
}
return temp;
}
};