我正在接受CodeWars中的形的训练,可以在这里找到https://www.codewars.com/kata/56747fd5cb988479af000028/train/javascript
我无法理解其他的解决方案。我的尝试是:
const getMiddle = (s) => {
let middle = ""
for(let i = 0; i < s.length; i++) {
if(s.length % 2 === 1) {middle = s[s.length-1/2]}
if(s.length % 2 === 0) {middle = s[s.length-1/2-1] + s[s.length-1/2]}
} return middle
}
6条答案
按热度按时间zyfwsgd61#
你把事情弄得太复杂了。
不需要循环,因为长度不依赖于
i
。不用检查长度是奇数还是偶数,只需除以2并向下舍入即可。
ars1skjm2#
如果
s
长度为奇数,则s.length / 2
将返回floating point
中的数字必须使用
parseInt
将其解析为int,或者可以使用快捷方式wfveoks03#
不要迭代字母。你可以简单地对
even
和odd
长度的字符串进行迭代。ix0qys7i4#
您需要计算字符串的
pivot
和length
。3htmauhk5#
以下是我的解决方案:
bgtovc5b6#
我们希望:
一个字符串是偶数,即使它的长度除以2没有余数:
现在,给定这个语句,我们有两个选择,一个是返回两个中间字符,以防字符串实际上是偶数。
因为如果一个字符串是偶数,它的中间是虚构的,我们想要的字符是离中间一个字符远的字符。
如果字符串的字符数是奇数,我们就有了一个由一个字符组成的中间字符串。因此,我们可以拉取一个索引。
其中s有一个索引,我们通过将字符串长度除以2的值向下舍入到最接近的整数来找到该索引。
因此:
您也可以将其编写为