怎么做网站排名自己的品牌怎么做加盟推广
题目链接
833. 字符串中的查找与替换
标签
字符串
步骤
Step1. 初始化 ans[]
:
for (int i = 0; i < s.length(); i++) { // 初始化ansans[i] = s[i];
}
Step2. 根据 index, source, target
查找;如果找到,那么将 ans[i]
更改为 target
,并将其后source.length()-1位设为空(被替换)。
for (int i = 0; i < n; i++) {int idx = indices[i];string src = sources[i], dst = targets[i];// 1.checkif (!findStr(s, src, idx)) {continue;}// 2.replaceans[idx] = dst;for (int j = idx + 1; j < idx + src.length(); j++) {ans[j] = "";}
}
其中,findStr()
如下:
bool findStr(string &str, string &target, int idx) {int pos = str.find(target, idx);if (pos == string::npos || pos != idx) {return false;}return true;
}
Step3. 拼接 ans[]
为一个字符串。
string res;
for (int i = 0; i < ans.size(); i++) {res += ans[i];
}
实现代码(C++)
class Solution {
public:bool findStr(string &str, string &target, int idx) {int pos = str.find(target, idx);if (pos == string::npos || pos != idx) {return false;}return true;}string findReplaceString(string s, vector<int>& indices, vector<string>& sources, vector<string>& targets) {int n = sources.size();vector<string> ans(s.length());for (int i = 0; i < s.length(); i++) { // 初始化ansans[i] = s[i];}for (int i = 0; i < n; i++) {int idx = indices[i];string src = sources[i], dst = targets[i];// 1.checkif (!findStr(s, src, idx)) {continue;}// 2.replaceans[idx] = dst;for (int j = idx + 1; j < idx + src.length(); j++) {ans[j] = "";}}string res;for (int i = 0; i < ans.size(); i++) {res += ans[i];}return res;}
};