CodingBat(Strings-2 starOut)麻烦的字符串

时间:2015-02-22 04:34:22

标签: java string

问题: 返回给定字符串的一个版本,对于字符串中的每个星(),星形和它左右的字符都消失了。所以" 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;
}

1 个答案:

答案 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();
}