1.给出两个instance variables: 一个是长度不限;种类不限的String;另一个是长度大于等于2,小于等于16;且任意元素的范围在大于等于1且小于等于100的array。
2.现在要将String里面的字符进行(调换位置----重新组成新的数组——将新的数组各字符位置还原成原来String里面各字符所在的初始位置);其移动原理是利用原始整数数组array的长度和array的index来进行调换:(以下是例子:)
For example:
(private): String str="abcdefghijkl”.
(private): int [] array={3, 2, 1};
0,1,2
1.先求出每个字符的组号; 求法就是String里的任意字符除以array的长度;得到的余数就是组号;而且组号的范围是大于等于零,小于等于array.length-1,也就是array的索引号。即str.charAt() % array.length=array的index;比方说str.charAt(0)=‘a’; a的ASCII码是97; 97除以array的长度(3)得到的余数是1;1就是a的组号。用这种方法以此类推,得到下面的图:
| a | b | c | d | e | f | g | h | i | j | k | l |
1 2 0 1 2 0 1 2 0 1 2 0
2.求出组号后,就可以进行移位了:移位的方法是,由于每个字符的组号就是array里面的index号;所以求出组号后,将起带进原来的数组里面去找到对应的元素,这个元素就是字符从右向左移动的次数:比方说,a对应的组号是1,把1带进array[1]里面去,得到的数是2;所以从a在String里面的原始位置开始从右向左移动;最终a放置的位置,就是从原始位置开始从右向左移动,第二个和a有相同组号(相同余数)的字符的那个位置:
原始 第二个 第一个和’a'
起点 和’a'有相同组号 有相同组号(余数)的字符
| 的字符。 |
| |
a | a
| | | | | | | a | | | | | |
1 2 0 1 2 0 1 2 0 1 2 0
|
|
这个位置也就是
a应该放置的新位置
从右往左移动------------------
根据这种方式将字符移动好后得到的新String,也就是新的字符串是“geljhcakfdbi”。
最后还要将这个重新组成的字符按照同样的方法在decrypt重新还原成原来的String,方法和逻辑是一样的;
但是上述的是从右往左移动,而decrypt部分是从左往右移动
2.现在要将String里面的字符进行(调换位置----重新组成新的数组——将新的数组各字符位置还原成原来String里面各字符所在的初始位置);其移动原理是利用原始整数数组array的长度和array的index来进行调换:(以下是例子:)
For example:
(private): String str="abcdefghijkl”.
(private): int [] array={3, 2, 1};
0,1,2
1.先求出每个字符的组号; 求法就是String里的任意字符除以array的长度;得到的余数就是组号;而且组号的范围是大于等于零,小于等于array.length-1,也就是array的索引号。即str.charAt() % array.length=array的index;比方说str.charAt(0)=‘a’; a的ASCII码是97; 97除以array的长度(3)得到的余数是1;1就是a的组号。用这种方法以此类推,得到下面的图:
| a | b | c | d | e | f | g | h | i | j | k | l |
1 2 0 1 2 0 1 2 0 1 2 0
2.求出组号后,就可以进行移位了:移位的方法是,由于每个字符的组号就是array里面的index号;所以求出组号后,将起带进原来的数组里面去找到对应的元素,这个元素就是字符从右向左移动的次数:比方说,a对应的组号是1,把1带进array[1]里面去,得到的数是2;所以从a在String里面的原始位置开始从右向左移动;最终a放置的位置,就是从原始位置开始从右向左移动,第二个和a有相同组号(相同余数)的字符的那个位置:
原始 第二个 第一个和’a'
起点 和’a'有相同组号 有相同组号(余数)的字符
| 的字符。 |
| |
a | a
| | | | | | | a | | | | | |
1 2 0 1 2 0 1 2 0 1 2 0
|
|
这个位置也就是
a应该放置的新位置
从右往左移动------------------
根据这种方式将字符移动好后得到的新String,也就是新的字符串是“geljhcakfdbi”。
最后还要将这个重新组成的字符按照同样的方法在decrypt重新还原成原来的String,方法和逻辑是一样的;
但是上述的是从右往左移动,而decrypt部分是从左往右移动