Kotlin中Slice方法参数不匹配问题求助(保留现有代码)
Kotlin字符串截取错误修复(保留原代码结构)
错误原因
Kotlin的String.slice()方法要求传入IntRange(范围对象),而非两个独立的整数参数,这和JavaScript的slice行为差异直接导致了类型不匹配错误。
针对性修改(尽量保留原代码逻辑)
- 修正字符串截取方式:将
s.slice(i, j)替换为s.slice(i until j),until会创建左闭右开的范围,和JS中slice的索引逻辑完全一致;也可以改用s.substring(i, j),两者效果相同。 - 修复回文判断逻辑:原代码用
split("")拆分字符串会生成包含首尾空字符串的数组,反转拼接后会出现错误结果,改用字符数组操作更高效准确。 - 调整循环范围:原循环
i in 0..s.length会让i取到超出字符串索引上限的值,改为0 until s.length;j的范围调整为i+1..s.length,避免生成无效空串。 - 规范语法细节:用
val声明无需修改的变量,用==判断字符串内容相等(Kotlin中===是引用相等)。
修改后的完整代码
internal class blah { fun longestPalindrome(s: String): String { var longestP = "" for (i in 0 until s.length) { for (j in i+1..s.length) { val subS = s.slice(i until j) val reversedSub = subS.toCharArray().reversedArray().concatToString() if (subS == reversedSub && subS.length > longestP.length) { longestP = subS } } } return longestP } }
内容的提问来源于stack exchange,提问作者meWho
相关产品推荐
相关产品推荐

