功能:return True/False 基于子字符串在字符串中的存在
Function: return True/False based on presence of substring in string
我正在应对 CoderByte 的初学者 JavaScript 挑战。我的代码在 "true" 情况下工作,但是一旦我添加一个 else 子句来处理 "false" 情况,它就会开始出现问题。
挑战: 写一个函数ABCheck(str)来获取传递的str参数和return 如果字符 a 和 b 在字符串中的任意位置至少被恰好 3 个位置分隔一次,则字符串为真(即 "lane borrowed" 将导致真,因为 a 和 b 之间恰好有三个字符)。否则 return 字符串 false.
观察结果: 如果我删除该部分,无论如何代码都能正常工作。但是,如果我添加一个子句来处理虚假案例,我觉得计数器会中断。例如,对于 false 部分,如果 (AxxB) 位于字符串的最开头,它会起作用,但即使它位于字符串 (zAxxB) 的后面,它也会 returns false。也许计数器坏了,或者我的 else 子句不正确?类似的东西。
感谢您提供任何提示并耐心等待初学者!
function ABCheck(str) {
//normalizes the string into an array without spaces
var arr = str.toLowerCase().split("").join("").replace( /\s/g, "")
//searches the entire string for the substring and returns true if it's found
for(var i = 0; i < arr.length; i++){
if(arr[i].indexOf('a') != -1 && arr[i+3].indexOf('b') != -1){
return true
}
//returns false if substring doesn't exist in string
else{
return false
}
}
}
ABCheck(readline());
您应该将 return false;
放在 for(var i = 0; i < arr.length; i++){...}
循环的 之外。
那是因为第一次只有当它没有发现条件arr[i].indexOf('a') != -1 && arr[i+3].indexOf('b') != -1
是true
时它returns false
并且功能结束。
function ABCheck(str) {
var arr = str.toLowerCase().split("").join("").replace( /\s/g, "")
for(var i = 0; i < arr.length; i++){
if(arr[i].indexOf('a') != -1 && arr[i+3].indexOf('b') != -1){
return true
}
}
return false;
}
所以它会随时检查条件是否为真它会 return true
否则在 for
循环后它会 return false
.
注意:-我认为.split("").join("")
是不必要的工作。
我正在应对 CoderByte 的初学者 JavaScript 挑战。我的代码在 "true" 情况下工作,但是一旦我添加一个 else 子句来处理 "false" 情况,它就会开始出现问题。
挑战: 写一个函数ABCheck(str)来获取传递的str参数和return 如果字符 a 和 b 在字符串中的任意位置至少被恰好 3 个位置分隔一次,则字符串为真(即 "lane borrowed" 将导致真,因为 a 和 b 之间恰好有三个字符)。否则 return 字符串 false.
观察结果: 如果我删除该部分,无论如何代码都能正常工作。但是,如果我添加一个子句来处理虚假案例,我觉得计数器会中断。例如,对于 false 部分,如果 (AxxB) 位于字符串的最开头,它会起作用,但即使它位于字符串 (zAxxB) 的后面,它也会 returns false。也许计数器坏了,或者我的 else 子句不正确?类似的东西。
感谢您提供任何提示并耐心等待初学者!
function ABCheck(str) {
//normalizes the string into an array without spaces
var arr = str.toLowerCase().split("").join("").replace( /\s/g, "")
//searches the entire string for the substring and returns true if it's found
for(var i = 0; i < arr.length; i++){
if(arr[i].indexOf('a') != -1 && arr[i+3].indexOf('b') != -1){
return true
}
//returns false if substring doesn't exist in string
else{
return false
}
}
}
ABCheck(readline());
您应该将 return false;
放在 for(var i = 0; i < arr.length; i++){...}
循环的 之外。
那是因为第一次只有当它没有发现条件arr[i].indexOf('a') != -1 && arr[i+3].indexOf('b') != -1
是true
时它returns false
并且功能结束。
function ABCheck(str) {
var arr = str.toLowerCase().split("").join("").replace( /\s/g, "")
for(var i = 0; i < arr.length; i++){
if(arr[i].indexOf('a') != -1 && arr[i+3].indexOf('b') != -1){
return true
}
}
return false;
}
所以它会随时检查条件是否为真它会 return true
否则在 for
循环后它会 return false
.
注意:-我认为.split("").join("")
是不必要的工作。