当前位置: 首页 > 知识库问答 >
问题:

消除字符串中的重复字符

堵德曜
2023-03-14

我目前正在解决以下黑客问题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,然后变成空字符串),而不是空字符串,但是我不明白为什么会这样。

共有1个答案

明正德
2023-03-14

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);
    }
}

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

 类似资料:
  • 问题内容: 我有像这样的字符串“ aaaabbbccccaaddddcfggghhhh”,我想删除重复的字符,得到像这样的字符串“ abcadcfgh”。 一个简单的实现是: 使用正则表达式是否可能有更好的实现? 问题答案: 你可以这样做: 正则表达式使用反向引用和捕获组。 正常的正则表达式是,但是您必须在Java中使用另一个反斜杠来使反斜杠转义。 如果您想要重复的字符数: 演示版

  • 我需要编写一个静态方法,该方法将作为参数,并返回一个新的。例如,如果我将“Maaaakkee”作为输入,它将返回“make”。我已经尝试了下面的代码,但它似乎没有显示最后一个字符。下面是我的代码:

  • 我想从字符串中消除连续重复,如 这是我的密码 我得到了错误非穷举模式,我想这是第二行的错误,当只剩下1个字符时,程序不知道如何处理。我该怎么修?

  • 问题内容: 我正在制作一个基于Java中字符串处理的程序,其中需要从字符串数组中删除重复的字符串。在此程序中,所有字符串的大小均相同。 “数组”是一个字符串数组,其中包含许多字符串,其中两个字符串彼此相似。因此,使用下面的代码,必须删除重复的字符串,但是不能删除。 如何删除重复的字符串? 我正在使用以下代码。 问题答案: 这会工作 或者只使用a 而不是数组。

  • 我正在用Java制作一个基于字符串处理的程序,在这个程序中,我需要从字符串数组中删除重复的字符串。在这个程序中,所有字符串的大小都是相同的。 “数组”是一个字符串数组,包含许多字符串,其中两个字符串彼此相似。因此,使用下面的代码必须删除重复的字符串,但不会删除。 如何删除重复字符串? 我正在使用以下代码。

  • 问题内容: 下面的代码试图删除字符串中所有重复的字符。我不确定代码是否正确。有人可以帮助我处理代码吗(即,字符匹配时实际发生了什么)? 问题答案: 该功能对我来说很好。我已经写了内联评论。希望能帮助到你: