26-算法打卡-字符串-右旋字符串-第二十六天
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--;}}