gpt4 book ai didi

javascript - 你能为我分解这个字符串操作函数吗? (JS)

转载 作者:行者123 更新时间:2023-11-29 21:45:05 25 4
gpt4 key购买 nike

我想我在正确的地方问这种问题,“讨论”标签的描述似乎很合适。如果我弄错了,那么我很抱歉 :s

那么,我的问题是关于 codefights挑战。挑战是:

Given a string, transform it (by shuffling its contents) into a palindrome!
A palindrome is a string that reads the same left-to-right and right-to-left.

Example:
"abcd"->"imp"
"cdcd"->"cddc"
"AABBaabb33!!??"->"!3?ABabbaBA?3!"

  • The input is a string and can contain letters ,digits and/or ? ,!
  • If it is not possible you should return imp (for impossible) and if there is more than one solution return the first one in the lexicographic order

我没有解决它所以我在第二天去看了最好的解决方案:

function outputString(s) {
s = s.split(a = b = c = "").sort()
i = 0
while (x = s[i])
x == s[++i] ?
[a += x, c = x + c, i++] :
b += x
return b[1] ? "imp" : a+b+c
}

可是我不明白。
让我试着解释一下我不明白的地方:

  • split 函数的这个输入到底是什么?
  • 我明白 while 里面有一个 if 的简写,但是里面做了什么对我来说是不可理解的 :s

我知道这类问题在这里没有真正的位置,但我想我设法做到了,因此可以得到一个简短、切题的答案。
如果有人能为我分解这两个元素。我将不胜感激。

最佳答案

  1. 拆分实际上是split(""),它返回单个字符串的数组。赋值返回被赋值的内容,因此代码也在那里初始化 a、b 和 c,但这不会影响拆分。

  2. while 中,程序循环遍历有序字符并按以下方式创建结果:如果下一个字母相同,则在 a 之后和 c 之前添加字母,并且向前第二步(注意额外的 i++),否则将字母添加到 b。最后,如果有多个单个字母(中间只能有一个)返回“imp”,否则 a+b+c(使用此算法时将是第一个解决方案)。

    <

参见 expanded versionAndreas .

关于javascript - 你能为我分解这个字符串操作函数吗? (JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31511357/

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