其他分享
首页 > 其他分享> > 1528. 重新排列字符串 ( 抽屉原理 )

1528. 重新排列字符串 ( 抽屉原理 )

作者:互联网

LeetCode: 1528. 重新排列字符串
在这里插入图片描述在这里插入图片描述


抽屉原理

将各个数安排回到自己坑位。

之前的题目中是放回自己位置的时候, 可能已经存在对的数了,就不需要继续交换。

// 如果下一个交换的数不是已经找到坑位的, 就继续交换
while nums[nums[i] - 1] != nums[i] 


AC Code

class Solution {
    public String restoreString(String s, int[] indices) {
        // 抽屉原理
        char[] cs = s.toCharArray();
        int len = cs.length;
        for(int i = 0; i < len; i++){
            while(indices[i] != i){
                int tmp = indices[i];
                char c = cs[i];
                indices[i] = indices[tmp];
                cs[i] = cs[tmp];
                indices[tmp] = tmp;
                cs[tmp] = c;
            }
        }
        return new String(cs);
    }
}





其他抽屉原理的题, 在主页搜索博客文章就行

标签:tmp,String,nums,int,1528,indices,重新排列,cs,抽屉
来源: https://blog.csdn.net/qq_43765535/article/details/111587598