题目解析:替换字符串中的特定字符
题目描述
给定一个字符串 S
,编写一个函数,将字符串中的小写字母 'a'
替换为 "%100"
,并返回替换后的字符串。
例如:
- 对于字符串
"abcdwa"
,所有'a'
字符会被替换为"%100"
,最终结果为"%100bcdw%100"
。 - 对于字符串
"banana"
,所有'a'
字符会被替换为"%100"
,最终结果为"b%100n%100n%100"
。 - 对于字符串
"apple"
,所有'a'
字符会被替换为"%100"
,最终结果为"%100pple"
。
思路分析
- 遍历字符串:我们需要遍历给定的字符串
S
,检查每个字符是否为'a'
。 - 字符替换:如果当前字符是
'a'
,则将其替换为"%100"
;如果不是,则保留原字符。 - 构建新字符串:我们需要一个额外的字符串来存储替换后的结果。在遍历过程中,将替换后的字符逐个添加到新字符串中。
- 返回结果:遍历完成后,返回新构建的字符串作为最终结果。
图解
由于这是一个文字解析,无法直接展示图解,但我们可以通过以下步骤在脑海中构建图像:
-
原始字符串:例如
"abcdwa"
。 -
遍历过程:从左到右逐个字符检查。
- 第一个字符
'a'
,替换为"%100"
。 - 第二个字符
'b'
,保留。 - 第三个字符
'c'
,保留。 - 第四个字符
'd'
,保留。 - 第五个字符
'w'
,保留。 - 第六个字符
'a'
,替换为"%100"
。
- 第一个字符
-
新字符串:将替换后的字符组合起来,形成
"%100bcdw%100"
。
代码详解
下面是实现上述思路的 C++ 代码:
cpp复制代码
#include <iostream>
#include <string>
std::string solution(const std::string& s) {
std::string result; // 用于存储替换后的结果
for (char c : s) { // 遍历输入字符串 s
if (c == 'a') { // 检查当前字符是否为 'a'
result += "%100"; // 如果是,则添加 "%100" 到结果字符串中
} else {
result += c; // 如果不是,则保留原字符到结果字符串中
}
}
return result; // 返回替换后的结果字符串
}
int main() {
// 测试用例
std::cout << (solution("abcdwa") == "%100bcdw%100") << std::endl; // 应输出 1 (true)
std::cout << (solution("banana") == "b%100n%100n%100") << std::endl; // 应输出 1 (true)
std::cout << (solution("apple") == "%100pple") << std::endl; // 应输出 1 (true)
return 0;
}
代码详解(续)
-
函数定义:
std::string solution(const std::string& s)
:定义了一个名为solution
的函数,它接受一个常量引用类型的字符串s
作为参数,并返回一个字符串类型的结果。
-
变量声明:
std::string result;
:在函数内部声明了一个字符串变量result
,用于存储替换后的结果。
-
遍历字符串:
for (char c : s)
:使用范围 for 循环遍历输入字符串s
中的每个字符,并将其赋值给变量c
。
-
字符替换:
-
if (c == 'a')
:检查当前字符c
是否为'a'
。result += "%100";
:如果是,则将字符串"%100"
添加到结果字符串result
中。
-
else
:如果当前字符c
不是'a'
。result += c;
:则将原字符c
添加到结果字符串result
中。
-
-
返回结果:
return result;
:遍历完成后,返回结果字符串result
。
-
主函数:
- 在
main
函数中,我们调用了solution
函数,并使用std::cout
输出了比较结果。由于solution
函数返回的是字符串,而==
运算符用于比较两个字符串是否相等,因此std::cout
会输出1
(表示true
)或0
(表示false
)。
- 在
总结
这个问题是一个简单的字符串替换问题,它考察了对字符串的遍历和字符替换的基本操作。通过遍历输入字符串,检查每个字符是否为 'a'
,并根据检查结果进行替换或保留操作,我们可以轻松地解决这个问题。最后,将替换后的结果字符串返回即可。