用Javascript判断一个字符串是否是isogram——逻辑复习
Check whether a string is an isogram with Javascript - logic review
我尝试解决一个字符串是否为等值图的问题如下:
我不明白为什么我的代码不起作用。请问谁能帮忙解释一下为什么?
等值线图没有连续或非连续的重复字母。
我曾尝试: 1- 将字符串转换为小写并将其设为数组。 2- 如果字符串为空,则创建一个 if 检查 return true。 3- 运行 for 循环遍历数组并比较每个字母的 firstIndex 和 lastIndex。如果第一个实例和最后一个实例不相同,则字符串不能是等值线图,因此 return false。??
function isIsogram(str){
str = str.toLowerCase();
let text = str.split("");
if (text.length === 0) {
return true;
}
for (let i = 0; i < text.length; i++) {
if ( text.indexOf(text[i]) !== text.lastIndexOf(text[i]) ){
return false;
} else {
return true;
}
}
}
一个简单的更改应该可以解决问题。您现有的功能只考虑第一个字符。然后,这将跳过字符串中的任何重复字符,例如 return 对于 'abb' 是正确的,这当然是不正确的。
最好继续到循环结束,只有在我们确定没有重复字符时才 return 为真。
function isIsogram(str){
str = str.toLowerCase();
let text = str.split("");
if (text.length === 0) {
return true;
}
for (let i = 0; i < text.length; i++) {
if (text.indexOf(text[i]) !== text.lastIndexOf(text[i]) ){
return false;
}
}
return true;
}
const testInputs = ['abb','aab','aba','abc','abcdz'];
testInputs.forEach(input => console.log(`isIsogram(${input}): ${isIsogram(input)}`));
这是另一种实现方式,使用 Set()
来计算唯一字符数。如果字符串没有重复字符,那么set size给定的唯一字符个数应该和输入的字符串长度一样。
function isIsogram(str){
return new Set(str).size === str.length;
}
const testInputs = ['abb','aab','aba','abc', 'abcdz'];
testInputs.forEach(input => console.log(`isIsogram(${input}): ${isIsogram(input)}`));
我尝试解决一个字符串是否为等值图的问题如下:
我不明白为什么我的代码不起作用。请问谁能帮忙解释一下为什么?
等值线图没有连续或非连续的重复字母。
我曾尝试: 1- 将字符串转换为小写并将其设为数组。 2- 如果字符串为空,则创建一个 if 检查 return true。 3- 运行 for 循环遍历数组并比较每个字母的 firstIndex 和 lastIndex。如果第一个实例和最后一个实例不相同,则字符串不能是等值线图,因此 return false。??
function isIsogram(str){
str = str.toLowerCase();
let text = str.split("");
if (text.length === 0) {
return true;
}
for (let i = 0; i < text.length; i++) {
if ( text.indexOf(text[i]) !== text.lastIndexOf(text[i]) ){
return false;
} else {
return true;
}
}
}
一个简单的更改应该可以解决问题。您现有的功能只考虑第一个字符。然后,这将跳过字符串中的任何重复字符,例如 return 对于 'abb' 是正确的,这当然是不正确的。
最好继续到循环结束,只有在我们确定没有重复字符时才 return 为真。
function isIsogram(str){
str = str.toLowerCase();
let text = str.split("");
if (text.length === 0) {
return true;
}
for (let i = 0; i < text.length; i++) {
if (text.indexOf(text[i]) !== text.lastIndexOf(text[i]) ){
return false;
}
}
return true;
}
const testInputs = ['abb','aab','aba','abc','abcdz'];
testInputs.forEach(input => console.log(`isIsogram(${input}): ${isIsogram(input)}`));
这是另一种实现方式,使用 Set()
来计算唯一字符数。如果字符串没有重复字符,那么set size给定的唯一字符个数应该和输入的字符串长度一样。
function isIsogram(str){
return new Set(str).size === str.length;
}
const testInputs = ['abb','aab','aba','abc', 'abcdz'];
testInputs.forEach(input => console.log(`isIsogram(${input}): ${isIsogram(input)}`));