思路:整体一次反转+局部两次反转
往后后退n,继伟先整体反转,在分别反转0到n-1和n到str.length()-1即可;
自己写的:
package CharacterString; import java.util.Scanner; public class GoString {public static void main(String[] args) {reverseWords();}public static void reverseWords() {Scanner sc = new Scanner(System.in);System.out.println("请输入字符串:");StringBuilder str = new StringBuilder(sc.next());System.out.println("请输入后移位数:");int n = sc.nextInt();// 1.反转整个字符串StringBuilder str1= reverseString(str, 0, str.length() - 1);// 2..反转前n位StringBuilder str2 =reverseString(str1,0,n-1);// 2..反转后str2.length()-n位StringBuilder str3 = reverseString(str2,n,str2.length()-1);System.out.println(str3.toString());}public static StringBuilder reverseString(StringBuilder str,int begin,int over){while (begin<over){char temp =str.charAt(begin);//第一个数存入中间变量str.setCharAt(begin,str.charAt(over));str.setCharAt(over,temp);begin++;over--;}return str;} }