首页 > 解决方案 > 如何在字符串中找到第一组不包含重复字符的字符

问题描述

我已经在下面的代码中尝试过,但它只有在只有一个字符集并且字符集出现在字符串中间时才有效。如果该集合多次出现并出现在字符串的末尾或开头,则结果为 false。

    String str = "aaabbccdddefghjjkklmn";

for(int i = 1; i < str.length() - 1; i++){
    if (str.charAt(i) != str.charAt(i+1) && str.charAt(i) != str.charAt(i-1)){
        System.out.print(str.charAt(i));
    }
}

使用上面的字符串,结果应该只是“efgh”,但上面的代码显示“efghlm”

标签: java

解决方案


你的方法是正确的。只是在找到第一组非重复字符之后,一旦找到重复字符就需要中断循环。

下面的代码段是您的代码的 JavaScript 等价物

 var str = "aaabbccdddefghjjkklmn";

var result = "";
for(var i = 1; i < str.length - 1; i++){
    // Find for non-repeating character
    if (str.charAt(i) != str.charAt(i+1) && str.charAt(i) != str.charAt(i-1)){
        result += str.charAt(i)
    }
    else {
      // Repeating character found
      // exit loop if non-repeating character already
      // found
      if (result.length > 0) {
        break;
      }
    }
}

console.log(result);


推荐阅读