javascript:在字符串中查找重复的(相邻和不相邻)字符

时间:2018-11-19 18:30:59

标签: javascript indexof

我试图在字符串中查找重复的字符并使它正常工作,但是当我输入相邻的字符时出现问题。我的函数最终输出第一个连续重复的char。知道为什么我的第一个条件没有执行吗?预期的输出应该是“ C”,但我最终会得到“ B”

    function findFirstRepeatedChar(s){
      for(let i=0; i<s.length; i++){
        if(s[i] == s[i+1]){
          return s[i];
        }else if(s.indexOf(s[i], i+1) != -1){
          return s[i];
        }
      }
      return false;
    }
    console.log(findFirstRepeatedChar("ABCCBD"));
    //console.log(findFirstRepeatedChar("ABCDB"));
    //console.log(findFirstRepeatedChar("ABCDE"));

2 个答案:

答案 0 :(得分:1)

您将返回第一个顺序匹配结果,而不是第一个相邻结果。存储非相邻匹配项并在函数末尾将其返回将使适当性返回第一个相邻匹配项。

function findFirstRepeatedChar(s){ 
    var ot = false;
    for(let i=0; i<s.length; i++){

      if(s[i] == s[i+1])  { 
         return s[i];
       }   else if(s.indexOf(s[i], i+1) != -1){
         ot = s[i]; 
       }
     }

       return ot; 

} 
console.log(findFirstRepeatedChar("ABCCBD"));

答案 1 :(得分:0)

在您的代码中,将return放入for中,然后您仅获得一个值。 如果创建数组并将重复的元素放入其中,则可以显示elements数组。

尝试此代码,并为字符串(ABCCBD)B(ABCDB)而不是(ABCDE)获得BC

<!DOCTYPE html>
 <html>
  <head>
   <script>
    function findFirstRepeatedChar(s){
      var arr=[];
        
      for(let i=0; i<s.length-1; i++){
         if(s[i] == s[i+1] && (i+1<=s.length)){
             //return s[i];
             arr.push(s[i]);
         }else if(s.indexOf(s[i], i+1) != -1 && (i+1<=s.length)){
                 //return s[i];
                 arr.push(s[i]);
               }
      }
                  
           for(i=0; i<arr.length; i++){
        
              console.log(arr[i]);
        
           }
        return false;
    }
       console.log(findFirstRepeatedChar("ABCCBD"));
       //console.log(findFirstRepeatedChar("ABCDB"));
       //console.log(findFirstRepeatedChar("ABCDE"));
   </script>
 </head>
<body>
    
</body>
</html>

希望这会有所帮助