javascriptチェック重複文字列
13218 ワード
javascriptチェック重複文字列
テーマの説明
文字列のstrが与えられているので、連続的に繰り返される文字(a-zA-Z)が含まれているかどうかを確認し、trueを返すことを含み、そうでなければfalseを返します.
考えが同じである
最も直接的な方法は、暴力循環検査に重複文字があるかどうかです.
上記の第二のステップを角度に変えて考えることができます.文字列を最初に行列に変換します.行列の中に重複した値があるとき、彼らのキーと値の特徴を観察します.
強力な正規表現を直接使用して実行できます.は文字列を検索します. 正規表現
テーマの説明
文字列の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/);
}