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
相关产品推荐
相关产品推荐

