You need to enable JavaScript to run this app. Java实现字符串按indices重排输出错误,如何排查修复?
优惠活动
大模型
产品
解决方案
定价
更多

Java实现字符串按indices重排输出错误,如何排查修复?

错误原因

你写的代码逻辑完全颠倒了字符和目标位置的映射关系:

  • 题目要求:原字符串下标i对应的字符,需要放在结果字符串下标为indices[i]的位置
  • 你的代码逻辑:结果字符串下标i的位置,放入原字符串下标为indices[i]的字符

以第一个测试用例为例:
输入s = "aiohn",indices = [3,1,4,2,0],按照题目要求原下标0的字符a要放到结果的第3位,而你的代码是给结果第0位取原下标3的字符h,和要求完全相反,自然输出错误。

修复方案

正确的实现逻辑是先初始化一个和字符串长度相同的字符数组,遍历原字符串的每一个下标,将对应字符放到字符数组的指定位置,最后把字符数组转为字符串即可。
修复后的代码如下:

class Solution {
    public String restoreString(String s, int[] indices) {
        char[] arr = new char[s.length()];
        for(int i = 0; i < s.length(); i++){
            arr[indices[i]] = s.charAt(i);
        }
        return new String(arr);
    }
}
验证说明

还是拿第一个测试用例验证:

  • i=0:arr[3] = 'a'
  • i=1:arr[1] = 'i'
  • i=2:arr[4] = 'o'
  • i=3:arr[2] = 'h'
  • i=4:arr[0] = 'n'
    最终字符数组为['n','i','h','a','o'],拼接后得到正确结果nihao。

内容的提问来源于stack exchange,提问作者Vaishnavi Chaurasia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 06:21:01