检查单词是否是纯javascript的等值线
如何使用函数检查给定单词是否是纯javascript的等值线图。函数必须返回true或false 等值线是具有重复字符的单词 我知道这段代码有效,但我需要一个更好的解决方案检查单词是否是纯javascript的等值线,javascript,arrays,string,Javascript,Arrays,String,如何使用函数检查给定单词是否是纯javascript的等值线图。函数必须返回true或false 等值线是具有重复字符的单词 我知道这段代码有效,但我需要一个更好的解决方案 function isIsogram(word){ x = false; y = false; for(i = 0; i < word.length; i++){ wordl = word.substring(0,i) wordr = word.substring(i)
function isIsogram(word){
x = false; y = false;
for(i = 0; i < word.length; i++){
wordl = word.substring(0,i)
wordr = word.substring(i)
x = wordl.includes(word.charAt(i))
y = wordr.includes(word.charAt(i))
//console.log(x,wordl,wordr)
}
return x&&y
}
isIsogram("thomas");//False
isIsogram("moses"); //True
函数isIsogram(word){
x=假;y=假;
for(i=0;i
当给定一个单词时,此函数如果将该单词一分为二,
分别是wordl和wordr。
两个拆分都会被选中,以在原始单词中包含一个字符。如果wordl和wordr都包含原始单词中的任何字符。那么这肯定是一个等值线
function isIsogram(word){
x = false; y = false;
for(i = 0; i < word.length; i++){
wordl = word.substring(0,i)
wordr = word.substring(i)
x = wordl.includes(word.charAt(i))
y = wordr.includes(word.charAt(i))
//console.log(x,wordl,wordr)
}
return !x&&y
}
isIsogram("thomas");//True
isIsogram("moses"); //False
函数isIsogram(word){
x=假;y=假;
for(i=0;i
基于kishea的答案:
function isIsogram(sWord)
{
for (iCharIndex = 0; iCharIndex < sWord.length; iCharIndex++)
if (sWord.substring(iCharIndex + 1).includes(sWord.charAt(iCharIndex)))
return false;
return true;
}
函数isIsogram(剑)
{
for(iCharIndex=0;iCharIndex
如果在当前位置(
子字符串
)右侧找到当前位置(字符
)的字符(包括
),则返回假
。否则循环将运行到末尾并返回true
。从字符串中删除重复的字母,然后检查两个长度。如果是相同的,那就是等值线
函数isIsogram(str){
返回str.split(“”).filter((item,pos,arr)=>arr.indexOf(item)==pos.length==str.length;
}
console.log(isIsogram('thomas'));
console.log(isIsogram('moses'))代码>下面是一个使用.split()
和.every()
的简单方法:
let isIsogram=(str)=>str.split(“”)。every((c,i)=>str.indexOf(c)==i);
console.log(isIsogram(“thomas”);/*不要重复写信*/
控制台日志(isIsogram(“moses”);/*让我们重复2次*/
console.log(isIsogram(“hello”);/*我重复2次*/
console.log(isIsogram(“world”);/*不要重复写信*/
console.log(isIsogram(“abc”);/*空格字符重复2次*/
关于:
> function isIsogram(word) {
... var a = word.split('')
... var b = Array.from(new Set(a))
... return a.length === b.length;
... }
undefined
> isIsogram("mesos")
false
> isIsogram("thomas")
true
或者更好(只检查每个字符一次):
>函数isIsogram2(word){
…对于(变量i=0,len=word.length-1;i isIsogram2(“mesos”)
假的
>伊西索格拉姆(“托马斯”)
真的
var str=prompt('输入字符串');
var strlen=str.length;
对于(i=0;i
const isIsogram=(字符串)=>{
const lowerCased=string.toLowerCase()
const result=小写.split(“”).every((v,i)=>小写.indexOf(v)==i)
返回结果
}
log(isIsogram('ambidextrily'))//true
log(isIsogram('patteRN')//false
一种方法
function isIsogram(str){
return !str.match(/([a-z]).*\1/i);
}
首先,这些结果不是倒退的吗?其次,这个答案将通过对代码工作原理的简短解释而得到改进。我测试了结果,这就是我得到的。只是需要更好的解决方案如果你在寻找更好的解决方案,那么你的尝试应该是问题的一部分,而不是答案。@kishea等值线图是一个没有重复ch的单词。@kishea字符。
但是单词moses有两个s-E,但它被认为是一个等值线。如果你不介意使用es6,你可以这样做:isIsogram=x=>x.length==new Set(x.split(“”))当这个代码可能提供正确答案时,对它为什么工作的简要解释对于教OP和社区中的其他人有很长的路要走。请考虑对这个代码SNIPPETHOW添加一个解释,这可以被改进来忽略字母情况吗?请解释(c,i)变量。我是一个初学者JS编码和文档有点难以理解understand@SamuelBrutonc=字符,i=索引。函数将字符串拆分,然后检查每个字符及其索引,然后将字符索引与字符串索引进行匹配。
function isIsogram(word){
return !/(.).*\1|\d/i.test(word)
}
var str=prompt('Enter a string');
var strlen=str.length;
for(i=0;i<strlen;i++){
var stc=str.charAt(i);
var flag=0;
for(j=0;j<strlen;j++){
var stk=str.charAt(j);
if(stc==stk){
flag=flag+1;
}
}
if(flag!=1){
break;
}
}
if(flag!=1){
alert('It is not an isogram');
}
else{
alert('It is an isogram');
}
const isIsogram = (word) => {
return new Set(word.toLowerCase()).size === word.length
}
console.log(isIsogram('Thor'));//true
console.log(isIsogram('Loki'));//true
console.log(isIsogram('America'));//false
function isIsogram(str){
return !str.match(/([a-z]).*\1/i);
}