题目解析:替换字符串中的特定字符 | 豆包MarsCode AI刷题

2 阅读3分钟

题目解析:替换字符串中的特定字符

题目描述

给定一个字符串 S,编写一个函数,将字符串中的小写字母 'a' 替换为 "%100",并返回替换后的字符串。

例如:

  • 对于字符串 "abcdwa",所有 'a' 字符会被替换为 "%100",最终结果为 "%100bcdw%100"
  • 对于字符串 "banana",所有 'a' 字符会被替换为 "%100",最终结果为 "b%100n%100n%100"
  • 对于字符串 "apple",所有 'a' 字符会被替换为 "%100",最终结果为 "%100pple"

思路分析

  1. 遍历字符串:我们需要遍历给定的字符串 S,检查每个字符是否为 'a'
  2. 字符替换:如果当前字符是 'a',则将其替换为 "%100";如果不是,则保留原字符。
  3. 构建新字符串:我们需要一个额外的字符串来存储替换后的结果。在遍历过程中,将替换后的字符逐个添加到新字符串中。
  4. 返回结果:遍历完成后,返回新构建的字符串作为最终结果。

图解

由于这是一个文字解析,无法直接展示图解,但我们可以通过以下步骤在脑海中构建图像:

  1. 原始字符串:例如 "abcdwa"

  2. 遍历过程:从左到右逐个字符检查。

    • 第一个字符 'a',替换为 "%100"
    • 第二个字符 'b',保留。
    • 第三个字符 'c',保留。
    • 第四个字符 'd',保留。
    • 第五个字符 'w',保留。
    • 第六个字符 'a',替换为 "%100"
  3. 新字符串:将替换后的字符组合起来,形成 "%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;

	}

代码详解(续)

  1. 函数定义

    • std::string solution(const std::string& s):定义了一个名为 solution 的函数,它接受一个常量引用类型的字符串 s 作为参数,并返回一个字符串类型的结果。
  2. 变量声明

    • std::string result;:在函数内部声明了一个字符串变量 result,用于存储替换后的结果。
  3. 遍历字符串

    • for (char c : s):使用范围 for 循环遍历输入字符串 s 中的每个字符,并将其赋值给变量 c
  4. 字符替换

    • if (c == 'a'):检查当前字符 c 是否为 'a'

      • result += "%100";:如果是,则将字符串 "%100" 添加到结果字符串 result 中。
    • else:如果当前字符 c 不是 'a'

      • result += c;:则将原字符 c 添加到结果字符串 result 中。
  5. 返回结果

    • return result;:遍历完成后,返回结果字符串 result
  6. 主函数

    • 在 main 函数中,我们调用了 solution 函数,并使用 std::cout 输出了比较结果。由于 solution 函数返回的是字符串,而 == 运算符用于比较两个字符串是否相等,因此 std::cout 会输出 1(表示 true)或 0(表示 false)。

总结

这个问题是一个简单的字符串替换问题,它考察了对字符串的遍历和字符替换的基本操作。通过遍历输入字符串,检查每个字符是否为 'a',并根据检查结果进行替换或保留操作,我们可以轻松地解决这个问题。最后,将替换后的结果字符串返回即可。