1528. 重新排列字符串

1528. 重新排列字符串

  1. 重新排列字符串
    给你一个字符串 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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金石不渝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值