我想分割一个范围,我可以在Javascfript,但在Kotlin挣扎。
我当前代码是:
internal class blah {
fun longestPalindrome(s: String): String {
var longestP = ""
for (i in 0..s.length) {
for (j in 1..s.length) {
var subS = s.slice(i, j)
if (subS === subS.split("").reversed().joinToString("") && subS.length > longestP.length) {
longestP = subS
}
}
}
return longestP
}
我得到的错误是
Type mismatch.
Required:
IntRange
Found:
Int
有没有办法保留我的大部分代码?
2条答案
按热度按时间tp5buhyn1#
如错误消息所示,
slice
需要一个IntRange,而不是两个Ints。因此,请传递一个range:顺便说一句,你的代码中有一些bug:
indices
范围:for (i in s.indices)
j
应该是i
或更大,而不是1或更大,否则你会冗余地检查一些倒置的字符串。它应该看起来像for (j in i until s.length)
。==
而不是===
。第二个运算符用于引用相等,对于两个计算的字符串,即使它们相同,它也总是为false。zaq34kh62#
此代码现在可以正常工作,但遗憾的是,它的优化程度不足以通过所有测试用例。