javascript - 是字符串数组 Pangrams
问题描述
如果字符串数组是包含字母 az 的 pangram,我正在尝试解决问题。如果字符串是 pangram,则返回 1,如果字符串不是 pangram,则返回 0。下面的代码检查字符串中的单个字母,但我遇到了检查每个字符串的问题。比如“The quick brown fox jumps over the lazy dog”是pangram,给1,“This is not a pangram”给0,for循环完成两个字符串的迭代后,应该返回10
function isPangram(string) {
let result = []
const letters = "abcdefghijklmnopqrstuvwxyz".split("")
for (let i = 0; i < string.length; i++) {
for (let j = 0; j < letters.length; j++) {
if (string[i].includes(letters[i])) {
result.push(1)
}
if (!string[i].includes(letters[i])) {
result.push(0)
}
}
}
return result.join("")
}
console.log(isPangram(["The quick brown fox jumps over the lazy dog", "This is not a pangram"]))
解决方案
如果您要让函数处理字符串数组,那么您可以将数组作为函数的参数,就像您现在正在做的那样,然后对给定的参数执行迭代,以检查是否该字符串是 pangram,如果是这种情况,则将 1 附加到一个字符串,最终返回该字符串。
我还建议使用正则表达式来检查您的字符串是否为 pangram(归功于此答案)。
function isPangram(strArray){
var resultStr = "";
let reg = /(?=.*a)(?=.*b)(?=.*c)(?=.*d)(?=.*e)(?=.*f)(?=.*g)(?=.*h)(?=.*i)(?=.*j)(?=.*k)(?=.*l)(?=.*m)(?=.*n)(?=.*o)(?=.*p)(?=.*q)(?=.*r)(?=.*s)(?=.*t)(?=.*u)(?=.*v)(?=.*w)(?=.*x)(?=.*y)(?=.*z)./i
strArray.forEach(function(e) {
//The value of res is determined by the outcome of the regex check, through a ternary operator
let res = (reg.test(e)) ? "1" : "0";
resultStr += res;
})
return parseInt(resultStr);
}
console.log(isPangram(["The quick brown fox jumps over the lazy dog","This is not a pangram"]))
如果您希望将结果作为字符串,您可以resultStr
从函数中解包。parseInt()
或者,如果您想保留当前的循环结构,您可以将and
所有结果放在一起,并将最终获得的结果添加到字符串中:
function isPangram(strArray) {
var resStr = "";
const letters = "abcdefghijklmnopqrstuvwxyz".split("");
for (let i in strArray) {
var tempRes = true;
for (j in letters) {
tempRes = tempRes & (strArray[i].toLowerCase().includes(letters[i]))
}
resStr += tempRes;
}
return resStr
}
console.log(isPangram(["THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG", "This is not a pangram"]))
正如@Johnny Mop 所指出的那样,如果您改为使用条件(strArray[i].includes(letters[i]))
来确定第一次0
获得 a 的时间,则可以break
通过循环来节省一些时间(在这种情况下并不是很多)。而且他正确地指出你需要toLowerCase()
,否则THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
不会导致 pangram 。
推荐阅读
- javascript - 在 app.module 中找不到类名组件
- mysql - 比较MySQL中单个表中所有记录的特定属性并找到其中最大的
- git - 第一次在存储库中包含一个文件夹,然后从下次开始忽略
- python - 使用烧瓶,模板。未找到错误模板
- java - 使用 Spring 表达式语言的 Spring Boot 咖啡因缓存
- python - 将变量分配给 dict.keys() 可以同时访问该 dict
- function - KeyError 使用 lmfit.Model.fit()
- java - 通过套接字将对象从android发送到PC......如何导入包?
- c# - 如何在没有证书的情况下安装 UWP 包?
- binary - 为 Browser 和 Node.js 读写二进制数据?