【发布时间】:2021-07-21 23:51:28
【问题描述】:
所以我已经为这个编码挑战工作了大约一天,但我仍然觉得我还没有触及表面,即使它被认为是简单的。问题要求我们取一个字符串参数,如果字母 'a' 和 'b' 之间正好有 3 个字符(不包括空格),那么它应该是真的。
示例:Input: "maple bread"; Output: false // Because there are > 3 places
Input: "age bad"; Output: true // Exactly three places in between 'a' and 'b'
这是我写的,虽然它还没有完成,而且很可能是在错误的方向:
function challengeOne(str) {
let places = 0;
for (let i=0; i < str.length; i++) {
if (str[i] != 'a') {
places++
} else if (str[i] === 'b'){
}
}
console.log(places)
}
所以我的想法是在字母“a”之后开始计算位置,直到它到达“b”,然后它会返回位置数量。然后我会开始另一个流程,如果 'places' > 3,则返回 false 或如果 'places' === 3,则返回 true。
但是,尝试第一个流程只会返回不是“a”的地点的总数。我正在使用 console.log 而不是 return 来测试它是否有效。
我只是在寻找正确的方向,如果有一种方法我可能会丢失,或者是否有其他类似的例子。我觉得解决方案很简单,但我似乎无法掌握它。
编辑:
我从这个挑战中休息了一下,以便我能以新的眼光看待它,并且能够快速解决它!我查看了大家的建议并应用它,直到找到解决方案。这是有效的新代码:
function challengeOne(str) {
// code goes here
str = str.replace(/ /g, '')
let count = Math.abs(str.lastIndexOf('a')-str.lastIndexOf('b'));
if (count === 3) {
return true
} else return false
}
感谢您的所有意见!
【问题讨论】:
-
鉴于示例,听起来字母之间应该正好有 2 个字符,而不是 3 个?如果
age bad应该是true,删除空格会得到ageb-ge是 2 个字符,而不是 3 个 -
问题不是很清楚,如果有
aabab。应该是true还是false -
但是对于
maple bread,有brea,在b和a之间正好有2个字符...
标签: javascript string loops