javascriptチェック重複文字列

13218 ワード

javascriptチェック重複文字列
テーマの説明
文字列のstrが与えられているので、連続的に繰り返される文字(a-zA-Z)が含まれているかどうかを確認し、trueを返すことを含み、そうでなければfalseを返します.
考えが同じである
最も直接的な方法は、暴力循環検査に重複文字があるかどうかです.
function containsRepeatingLetter(str) {
	//    
	//         
	var tmp = str.replace(/[^a-zA-Z]*/g, '');
	//            2 ,           
	if (tmp.length < 2) {
	    return false;
	}

	//    
	//          
	var rstr = ""; //                    

	//      tmp
	for (var i = tmp.length - 1; i >= 0 ; i--) {
		//         ,     ,  rstr         tmp     
		if (rstr.indexOf(tmp[i]) !== -1) {
			break;
		}
		rstr += tmp[i];
	}
	
	//      ,  tmp rstr     
	return rstr.length < tmp.length;
}
考え方2
上記の第二のステップを角度に変えて考えることができます.文字列を最初に行列に変換します.行列の中に重複した値があるとき、彼らのキーと値の特徴を観察します.

var arr = ['a', 'b', 'a'];

a[0] === 'a'

a[1] === 'b'

a[2] === 'a'

//              ,                  

a['a'] = 0

a['b'] = 1

a['a'] = 2

                    :

console.log(a) // a['a'] = 2 a['b'] = 2        
これによって私達は考え方の第二歩を改めます.

function containsRepeatingLetter(str) {
	//    
	//         
	var tmp = str.replace(/[^a-zA-Z]*/g, '');
	if (tmp.length < 2) {
	    return false;
	}

	//    
	//       
	var arr = tmp.split('');
	var reverse = [];
	//       
	arr.forEach(function (value, index) {
		if (!reverse[value]) {
			reverse[value] = index;
			reverse.length++;
		}
	});
	
	return reverse.length !== arr.length;
}

考えが三つある
強力な正規表現を直接使用して実行できます.
function containsRepeatingLetter(str) {
	// \1                 ,    ([a-zA-Z])           
    return /([a-zA-Z])[a-zA-Z]*\1/.test(str);
}
ただし、上記の方法は文字列の中に重複した文字があるかどうかを検出することしかできません.次は連続して繰り返す文字に対して修正します.
  • は文字列を検索します.
    function containsRepeatingLetter(str) {
    	var len = str.length;
    	if (len < 2) {
    		return false;
    	}
    	
    	for (i = 1; i < len; i++) {
    		if (str[i - 1] === str[i]) {
    			return true;
    		}	
    	}
    
    	return false;
    }
    
  • 正規表現
  • function containsRepeatingLetter(str) {
    	//                   
        return !!str.match(/([a-zA-Z])\1/);
    }