问题描述
给定一个字符串ss,编写一个函数,将字符串中的小写字母a替换为"%100",并返回替换后的字符串。
例如,对于字符串"abcdwa",所有a字符会被替换为"%100",最终结果为%100bcdw%100"。
测试样例
样例1:
输入:
s = "abcdwa"
输出:'%100bcdw%100'
样例2:
输入:
s = "banana"
输出:'b%100n%100n%100'
样例3:
输入:
s = "apple"
输出:'%100pple'
解题思路
问题理解
- 接收一个字符串作为输入。
- 遍历这个字符串,检查每个字符。
- 如果字符是小写字母
a,则将其替换为"%100"。 - 返回替换后的字符串。
数据结构选择:
在处理字符串时,选择合适的数据结构是非常重要的。在这个问题中,我们选择使用StringBuilder,因为它提供了一个可变的字符序列,可以高效地进行字符串拼接操作。相比于直接使用String对象,StringBuilder在进行大量字符串操作时更加高效,因为它内部维护了一个字符数组,可以直接在数组上进行修改,而不需要每次都创建新的字符串对象。
算法步骤
- 初始化:创建一个
StringBuilder对象,用于存储替换后的字符串。 - 遍历字符串:使用
for循环遍历输入字符串s中的每个字符。 - 检查字符:在每次循环中,检查当前字符是否为小写字母
a。 - 替换字符:如果当前字符是
a,则将其替换为"%100"并追加到StringBuilder中;否则,直接将原字符追加到StringBuilder中。 - 返回结果:遍历完成后,将
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",否则保持不变。这种方法可以使代码更加简洁和现代化。