gpt4 book ai didi

javascript - 编程新手,试图解决这个 Isogram kata(使用 .match javascript)

转载 作者:行者123 更新时间:2023-11-30 13:46:35 26 4
gpt4 key购买 nike

我大约一个月前开始学习编程。并且刚刚开始了一些关于 codewars 的 kata 练习。

目前在这一个。 https://www.codewars.com/kata/isograms/javascript

等值图是一个没有重复字母的单词,无论是连续的还是非连续的。实现一个函数,确定仅包含字母的字符串是否是等值线图。假设空字符串是等值线图。忽略字母大小写。

我的计划 1. 将字符串拆分成一个数组(在写这篇文章时我意识到这一步可能没有必要......) 2. 使用 .match & length 检查重复字母(如果 length > 1)

下面是我的粗略代码,但我无法让它做我想做的事。我只能在 .match 方法中放置一个预定义的字母,在我下面的代码中,我将/a/用作占位符,它将正确输出在两个示例中分别出现 5x 和 1x。

我想要它做的是将 strArray[i] 与 .match() 结合使用,并使用 .match 循环测试 strArray 中的每个字母。如果其中任何一个的长度超过 1,则函数将返回 false

我知道可能有更好的方法来解决这个问题等,(我在 codewars 上看到了解决方案。只有 1-2 行..)我看过它们,但它们似乎太复杂了,目前我正在尝试用我理解的方法来解决。

function isIsogram(str) {
let strArray = str.split('')
console.log(strArray)

for(let i=0; i < str.length; i++) {
let x = strArray[i]
let checkRepeat = str.match(/a/gi).length

console.log(checkRepeat)
}

return
}
console.log(isIsogram("aaabbaac")) //false
console.log(isIsogram("abcde")) //true

感谢您的帮助!

最佳答案

如果您打算使用 .match 来检查重复字母,则不需要任何其他代码,因为这可以通过单个正则表达式来实现。捕获一个字符,然后最终使用反向引用再次匹配同一个字符。如果找到相同的字符,则它不是一个等值线,否则它是一个等值线:

const isIsogram = str => !str.match(/(.).*\1/i);

模式 (.).*\1 表示:

  • (.) - 匹配任意字符,并将其放入捕获组
  • .* - 匹配零个或多个字符
  • \1 - 后跟前面捕获组的相同字符

加上不区分大小写的标志,i

关于javascript - 编程新手,试图解决这个 Isogram kata(使用 .match javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59206849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com