1 題目說明
字符串的右旋轉操作是把字符串尾部的若干個字符轉移到字符串的前面。給定一個字符串 s 和一個正整數 k,請編寫一個函數,將字符串中的后面 k 個字符移到字符串的前面,實現字符串的右旋轉操作。
例如,對于輸入字符串 "abcdefg" 和整數 2,函數應該將其轉換為 "fgabcde"。
輸入:輸入共包含兩行,第一行為一個正整數 k,代表右旋轉的位數。第二行為字符串 s,代表需要旋轉的字符串。
輸出:輸出共一行,為進行了右旋轉操作后的字符串。
2 解題思路
1、將字符串整體反轉:abcdefg ==>>? gfedcba
2、前k個元素反轉,剩下的數反轉? ??gfedcba ==>> fdabcde
3 代碼編寫
public String reverseK(String s, int k) {char[] sArray = s.toCharArray();// 整體反轉reverseK(sArray, 0, sArray.length-1);// 前k個元素反轉reverseK(sArray, 0, k-1);// 后面的所有元素反轉reverseK(sArray, k, sArray.length-1);return String.valueOf(sArray);}public void reverseK(char[] sArray, int left, int right) {while (left < right) {char temp = sArray[left];sArray[left] = sArray[right];sArray[right] = temp;left++;right--;}}