Java 消除字符串中的重复字符
我目前正在解决以下hackerrank问题,在给定字符串的情况下,我必须消除相同的字符对 我的代码如下:Java 消除字符串中的重复字符,java,algorithm,Java,Algorithm,我目前正在解决以下hackerrank问题,在给定字符串的情况下,我必须消除相同的字符对 我的代码如下: 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);
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);
}
}
static String super\u reduced\u String(字符串s){
对于(int i=0;i
它在大多数情况下都能工作,但是对于某些测试用例,例如如果字符串是“baab”,代码输出“bb”(baab应该简化为bb,然后变成空字符串)而不是空字符串,但是我不明白为什么会这样。在
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);
}
}
static String super\u reduced\u String(字符串s){
对于(int i=0;i
篡改循环计数器总是有点容易出错。因此,我建议避免使用它。您将I设置为0,但随后到达循环体的末尾,并且在下一个过程中I将递增…啊,我现在明白了,在将I更改为-1而不是0后,代码现在可以工作了,谢谢。