写于2015年4月7日,最新删改于2017年5月29日,可能已过时,请谨慎参考。
要判断一个单词中是否有重复字母非常容易,先用循环尝试一次:
function isIsogram(str) {
str = str.toLowerCase();
for (let i = 0; i < str.length - 1; i++) {
if (str.indexOf(str.charAt(i), i + 1) >= 0) {
return false;
}
}
return true;
}
这个方法是从左向右检查字符,尝试找出最近的一个相同字符。
换个思路,用正则来处理这个问题将无比简洁:
function isIsogram2(str) {
return !/(.).*?\1/i.test(str);
}
匹配过程和上述循环相同,性能与循环版相当。
网友评论