You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

字符串循环右移替换需求与代码实现偏差的技术问询

问题分析与代码修正

需求明确

要实现的是字符串字符循环右移一位:每个字符替换为原字符串中它右侧相邻的字符,最后一个字符则替换为原字符串的第一个字符,重新拼接成新字符串。

现有代码的问题

当前代码完全没执行位置右移操作,只是把每个字符的ASCII值直接加1——字母按字母表递增一位,数字也同步加1:

fun main() {
    val message = "abcd1234"
    val messageSecond = message.map { char -> char + 1 }.joinToString("")
}

以输入abcd1234为例,这段代码会输出bcde2345,和需求预期的结果完全不符。

修正思路

  • 基于字符在字符串中的索引处理:对原字符串索引为i的位置,新字符串对应位置取原字符串索引(i + 1) % message.length的字符
  • 最后一个字符的索引加1后取模会得到0,刚好对应原字符串的第一个字符,实现循环效果

修正后的代码

fun main() {
    val message = "abcd1234"
    val messageSecond = message.indices.map { i ->
        message[(i + 1) % message.length]
    }.joinToString("")
    println(messageSecond) // 输出结果:d1234abc
}

内容的提问来源于stack exchange,提问作者Superavia sales

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 01:50:17