String题——字符串数组改变顺序

字符串数组元素调换位置 (正向&反向)

输入为一个字符串数组和一个int数组,输出的结果是该字符串数组通过int数组相应变换后得到的数组
For example: 输入["a", "b", "c", "d"] 和 [2, 0, 1, 3], 输出应该为["b", "c", "a", "d"], int数组第0个位置上的值为2, 表示"a"应该放到结果的第2个位置上
每次只要不停的交换字符串数组对应位置的值以及int数组对应位置的值即可,程序如下:

public static String[] getback(String[] s, int[] index) {
    for(int i = 0; i < index.length; i++) {
         if(index[i] == i) continue;
         while(index[i] != i) {
             int j = index[i];
             swapStr(s, i, j);
             swapInt(index, i, j);
         }
     }
     return s;
 }

输入为改变后的字符串数组和一个int数组,int数组的index表示原先的index,值表示现在的位置,输出的结果是原字符串
For example: 输入["b", "c", "a", "d"] 和 [2, 0, 1, 3], 输出应该为 ["a", "b", "c", "d"], int数组里第0个的值2表示string数组第2个位置上的值"a" 原先应该在第0个位置上

i = 0, j = index[i] = 2, 而index[j] = 1,表示s[1]上面的"c"应该被换到s[2]上面,所以交换index[j]和j上面的值,相应的index也要变换,把2换到第2位上,交换完成后,j对应的值为"c",已经回到本来的位置上了。同时,开始在第2位上的"a"换到第1个位置上index[0]对应的值也为1,所以a保持正确的位置。下一轮的i = 这一轮的j,所以接着交换上一轮上面index[j]对应的值,依次循环直到当前位置上的值被交换成原先的值为止。
同样是交换对应位置的值,不同的是string数组交换的值变为下一个:

public static String[] getback(String[] s, int[] index) {
    for(int i = 0; i < index.length; i++) {
        if(index[i] == i) continue;
        while(index[i] != i) {
             int j = index[i];
             swapStr(s, index[j], j);
             swapInt(index, i, j);
        }
    }
    return s;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值