C++程序 在字符串中替换单个字符
给定一个字符串S,字符c1和字符c2。将字符c1替换为字符c2,将字符c2替换为字符c1。
示例:
输入: grrksfoegrrks,
c1 = e, c2 = r
输出: geeksforgeeks
输入: ratul,
c1 = t, c2 = h
输出: rahul
遍历该字符串并检查c1和c2的出现。如果找到c1,则将其替换为c2,如果发现c2,则将其替换为c1。
// C ++程序替换c1为c2
//和c2互换
#include <bits/stdc++.h>
using namespace std;
string replace(string s,
char c1, char c2)
{
int l = s.length();
// 循环遍历字符串
for (int i = 0; i < l; i++)
{
// 检查c1并替换
if (s[i] == c1)
s[i] = c2;
// 检查c2并替换
else if (s[i] == c2)
s[i] = c1;
}
return s;
}
// 驱动程序
int main()
{
string s = "grrksfoegrrks";
char c1 = 'e', c2 = 'r';
cout << replace(s, c1, c2);
return 0;
}
输出
geeksforgeeks
时间复杂度: O(n)
辅助空间: O(n),因为程序创建字符串s的副本。
用两个临时字符串替换字符
该方法涉及逐个字符地迭代输入字符串,并根据需要替换字符。 对于每个字符,我们检查它是否等于c1或c2,并根据需要将其替换为其他字符。 我们使用两个临时字符串来跟踪替换字符,最后使用修改后的字符串更新输入字符串。 这种方法在输入字符串上进行了单次遍历,因此具有时间复杂度为O(n)的特点,其中n是输入字符串的长度。
步骤:
- 定义一个函数 replaceChar ,它接受一个字符串S和两个字符和作为输入。
- 初始化两个临时字符串 s1和s2 为空字符串。
- 遍历输入字符串S中的字符。
- 对于每个字符 c在S中, 检查c是否等于c1或c2。
- 如果c等于 c1, 将c2附加到s1中,将c1附加到s2中。
- 如果c等于c2,则将 c1附加到s1 和 c2附加到s2。
- 如果c既不等于 c1也不等于c2, 将c附加到s1和s2中。
- 使用s1更新输入字符串 S。
#include <iostream>
#include <string>
using namespace std;
void replaceChar(string& S, char c1, char c2) {
string s1, s2;
for (char c : S) {
if (c == c1) {
s1 += c2;
s2 += c1;
} else if (c == c2) {
s1 += c1;
s2 += c2;
} else {
s1 += c;
s2 += c;
}
}
S = s1;
}
int main() {
string S = "Omkhaz";
char c1 = 'z', c2 = 'r';
// Replace characters in string
replaceChar(S, c1, c2);
// Print modified string
cout << "Modified string: " << S << endl;
return 0;
}
输出
Modified string: Omkhar
时间复杂度: O(n),其中n是输入字符串的长度。
辅助空间: O(n)。