问题: 返回给定字符串的一个版本,对于字符串中的每个星(),星形和它左右的字符都消失了。所以" ab cd"收益" ad"和" ab cd"也产生了" ad"。 防爆。 starOut(" ab cd")→" ad" starOut(" ab cd")→" ad" starOut(" sm eilly")→"愚蠢"
我知道网上有答案,但我不想复制它们。我已经开始了大部分但是不知道如何取出空格并转换回字符串?如果你们有更好的解决方案,请随意提供。请不要提供基于Regex的解决方案。
public static String starOut(String str) {
char[] array = str.toCharArray();
for(int i = 0; i < array.length; i++) {
if(array[i] == '*' && i != 0) {
if(array[i - 1] != '*') {
array[i - 1] = ' ';
}
if(array[i + 1] != '*') {
array[i + 1] = ' ';
}
}
//Rest of Code...
if()
}
return str;
}
答案 0 :(得分:0)
您可以获取代码,然后循环遍历数组并将其附加到StringBuilder。
但是,如果输入可以包含空格,则会出现问题,因为我们只是忽略所有空格。如果输入可以包含空格,请考虑将char设置为其他内容,或者使用对象Character,以便将其设置为null。
public static String starOut(String str) {
char[] array = str.toCharArray();
for (int i = 0; i < array.length; i++)
if (array[i] == '*') {
if (i - 1 >= 0 && array[i - 1] != '*')
array[i - 1] = ' ';
if (i + 1 < array.length && array[i + 1] != '*')
array[i + 1] = ' ';
array[i] = ' ';
}
StringBuilder sb = new StringBuilder();
for (char c : array)
if (c != ' ')
sb.append(c);
return sb.toString();
}