刷题笔记 | a替换函数 | 豆包MarsCode AI刷题

34 阅读2分钟

问题描述

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

例如,对于字符串"abcdwa",所有a字符会被替换为"%100",最终结果为%100bcdw%100"

测试样例

样例1:

输入:s = "abcdwa"
输出:'%100bcdw%100'

样例2:

输入:s = "banana"
输出:'b%100n%100n%100'

样例3:

输入:s = "apple"
输出:'%100pple'

解题思路

问题理解

  1. 接收一个字符串作为输入。
  2. 遍历这个字符串,检查每个字符。
  3. 如果字符是小写字母a,则将其替换为"%100"
  4. 返回替换后的字符串。

数据结构选择:

在处理字符串时,选择合适的数据结构是非常重要的。在这个问题中,我们选择使用StringBuilder,因为它提供了一个可变的字符序列,可以高效地进行字符串拼接操作。相比于直接使用String对象,StringBuilder在进行大量字符串操作时更加高效,因为它内部维护了一个字符数组,可以直接在数组上进行修改,而不需要每次都创建新的字符串对象。

算法步骤

  1. 初始化:创建一个StringBuilder对象,用于存储替换后的字符串。
  2. 遍历字符串:使用for循环遍历输入字符串s中的每个字符。
  3. 检查字符:在每次循环中,检查当前字符是否为小写字母a
  4. 替换字符:如果当前字符是a,则将其替换为"%100"并追加到StringBuilder中;否则,直接将原字符追加到StringBuilder中。
  5. 返回结果:遍历完成后,将StringBuilder转换为String并返回。

代码实现

public class Main {
    public static String solution(String s) {
        // 创建一个 StringBuilder 来构建新的字符串
        StringBuilder result = new StringBuilder();
        
        // 遍历字符串中的每个字符
        for (char c : s.toCharArray()) {
            // 检查当前字符是否为小写字母 'a'
            if (c == 'a') {
                // 如果是 'a',则将其替换为 "%100"
                result.append("%100");
            } else {
                // 否则,保持原字符不变
                result.append(c);
            }
        }
        
        // 将 StringBuilder 转换为 String 并返回
        return result.toString();
    }

    public static void main(String[] args) {
        System.out.println(solution("abcdwa").equals("%100bcdw%100"));
        System.out.println(solution("banana").equals("b%100n%100n%100"));
        System.out.println(solution("apple").equals("%100pple"));
    }
}

代码优化

public static String replaceAWithPercentOptimized(String s) {
    return s.chars()
        .mapToObj(c -> c == 'a' ? "%100" : String.valueOf((char) c))
        .collect(Collectors.joining());
}

这段代码使用了流来处理字符串中的每个字符,如果字符是a,则替换为"%100",否则保持不变。这种方法可以使代码更加简洁和现代化。