我需要检查一个单词是Isogram,Isogram的含义,是一个单词没有重复的字母。
我需要实现一个函数来确定只包含字母的字符串是否是等值线图。假设空字符串是等值线图。忽略字母案例。
这是一个测试用例
isIsogram( "Dermatoglyphics" ) == true
isIsogram( "aba" ) == false
isIsogram( "moOse" ) == false // -- ignore letter case
我正在考虑用正则表达式做这件事。
function isIsogram(str){
//...
}
你可以帮忙吗?
答案 0 :(得分:8)
就像那个一样简单
function isIsogram (str) {
return !/(\w).*\1/i.test(str);
}
答案 1 :(得分:3)
这样做:
HashSet
答案 2 :(得分:2)
您可以通过将输入转换为小写来使用它:
var re = /^(?:([a-z])(?!.*\1))*$/;
function isIsogram(str) {
return re.test( str.toLowerCase() );
}
<强>测试强>
isIsogram("Dermatoglyphics")
true
re.test("aba")
false
isIsogram("moOse")
false
答案 3 :(得分:1)
我不认为正则表达式是最好的工具,只需使用普通的JS。
function isIsogram(str){
var chars = str.toLowerCase().split(''), found = {};
for (var i=0,l=chars.length; i<l; i++){
if (typeof found[chars[i]] === 'undefined')
found[chars[i]] = true;
else return false;
}
return true;
}
document.write(isIsogram("Dermatoglyphics")+"<br>")
document.write(isIsogram("aba")+"<br>")
document.write(isIsogram("moOse")+"<br>")