消除String中的重复字符

问题描述 投票:2回答:1

我目前正在解决以下hackerrank问题https://www.hackerrank.com/challenges/reduced-string/problem,在给定字符串的地方我必须消除相同的字符对。

我的代码如下:

static String super_reduced_string(String s){
    for (int i = 0; i < s.length()-1; i++) {
        if (s.charAt(i) == s.charAt(i+1)) {
            s = s.substring(0, i) + s.substring(i+2);
            i = 0;
        }
    }
    if (s.length() == 0) {
        return("Empty String");
    } else {
        return(s);
    }

}

它适用于大多数情况,但是对于某些测试用例,如果字符串是“baab”,代码输出“bb”(baab应该简化为bb然后再变为空字符串)而不是空字符串,但是我不知道不知道为什么会这样。

java algorithm
1个回答
7
投票

for循环结束时,i递增。因此,如果您希望循环在匹配后再次从头开始,则需要将i设置为-1,以便下一个循环运行以i==0开头。

static String super_reduced_string(String s){
    for (int i = 0; i < s.length()-1; i++) {
        if (s.charAt(i) == s.charAt(i+1)) {
            s = s.substring(0, i) + s.substring(i+2);
            i = -1; // so after the ++ at the end of the loop, the next loop-run will have i==0.
        }
    }
    if (s.length() == 0) {
        return("Empty String");
    } else {
        return(s);
    }
}

篡改循环计数器总是有点容易出错。所以我建议避免它。

© www.soinside.com 2019 - 2024. All rights reserved.