1528. 重新排列字符串
- 重新排列字符串
给你一个字符串 s 和一个 长度相同 的整数数组 indices 。
请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。
返回重新排列后的字符串。
示例 1:
输入:s = “codeleet”, indices = [4,5,6,7,0,2,1,3]
输出:“leetcode”
解释:如图所示,“codeleet” 重新排列后变为 “leetcode” 。
示例 2:
输入:s = “abc”, indices = [0,1,2]
输出:“abc”
解释:重新排列后,每个字符都还留在原来的位置上。
示例 3:
输入:s = “aiohn”, indices = [3,1,4,2,0]
输出:“nihao”
示例 4:
输入:s = “aaiougrt”, indices = [4,0,2,6,7,3,1,5]
输出:“arigatou”
思路:考察hashmap :
先用一个hashmap映射字符和数字,把数组重新排序一下,
打印Hashmap
package 期末;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.HashMap;
/*
* 1528. 重新排列字符串
给你一个字符串 s 和一个 长度相同 的整数数组 indices 。
请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。
返回重新排列后的字符串。
示例 1:
输入:s = "codeleet", indices = [4,5,6,7,0,2,1,3]
输出:"leetcode"
解释:如图所示,"codeleet" 重新排列后变为 "leetcode" 。
示例 2:
输入:s = "abc", indices = [0,1,2]
输出:"abc"
解释:重新排列后,每个字符都还留在原来的位置上。
示例 3:
输入:s = "aiohn", indices = [3,1,4,2,0]
输出:"nihao"
示例 4:
输入:s = "aaiougrt", indices = [4,0,2,6,7,3,1,5]
输出:"arigatou"
思路:考察hashmap :
先用一个hashmap映射字符和数字,把数组重新排序一下,
打印Hashmap
*/
public class a1528重新排列字符串 {
public static String restoreString(String s, int[] indices) {
HashMap<Integer, Character> ha =new HashMap<Integer, Character>();
char []ch =s.toCharArray();
int index=0;
for (char c : ch) {
ha.put(indices[index], c);//
index++;
}
Arrays.sort(indices); //数组重新排序
StringBuilder res =new StringBuilder();
for (int i = 0; i < indices.length; i++) {
res.append(ha.get(indices[i]));
}
// System.out.println(res.toString());
return res.toString();
}
public static void main(String[] args) {
// restoreString("codeleet",new int[]{4,5,6,7,0,2,1,3});
restoreString("aiohn",new int[]{3,1,4,2,0});
}
}
官方答案
class Solution {
public String restoreString(String s, int[] indices) {
int length = s.length();
char[] result = new char[length];
for (int i = 0; i < length; i++) {
result[indices[i]] = s.charAt(i);
}
return new String(result);
}
}
来源:力扣leetcode