【发布时间】:2015-04-27 16:15:00
【问题描述】:
给定一个字符串和一个非空字符串,返回原始字符串的一个版本,其中所有字符都被加号(“+”)替换,除了保持不变的单词字符串的外观。
plusOut("12xy34", "xy") → "++xy++"
plusOut("12xy34", "1") → "1+++++"
plusOut("12xy34xyabcxy", "xy") → "++xy++xy+++xy"
我在尝试编写 StringBuffer 解决方案来解决这个问题时遇到了麻烦。 这是这个的原始代码:
public static String plusOut(String str, String word) {
int i = 0;
String str2 = "";
while (i < str.length() - word.length()+1)
if (!str.substring(i,i+word.length()).equals(word)) {
str2 += "+";
i++;
}
else {
str2 += word;
i += word.length(); //found pattern - skip
}
//if any remaining chars at end (guaranteed not to be pattern) replace
//with +s
if (i < str.length() && !str.substring(i).equals(word.substring(1))) {
for (int j = 0; j < word.length()-1; j++) str2 += "+";
}
return str2;
}
【问题讨论】:
-
您的问题是什么?我没有看到
StringBuffer? -
使用递归。图灵机
-
@JaredBurrows 我想将我的代码转换为使用 StringBuffer 的位置
标签: java stringbuffer