思路:整体一次反转+局部两次反转
往后后退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; } }