- /*
- 将一个字符串进行反转。将字符串中指定部分进行反转,"abcdefg";abfedcg
- 分析功能:
- 1 功能的结果,反转指定字符串--------------------返回值是String类型。
- 2 有没有未知变量--指定字符串,起始位,结束位。--参数类型是(String str,int start,int end)
- 思路:因为要指定部分字符串进行反转,就要利用到脚标,继而要利用数组,所以思路如下。
- 1 把字符串全部转换为字符数组--char[] toCharArray()
- 2 把数组指定元素反转----------自定义一个功能反转数组reverse()
- 3 把字符数组全部转换为字符串--构造函数法string new(char[] ch)。或者静态方法static String copyValueOf(char[] ch);
- 4 将指定反转的部分做参数传递。
- 数组反转复习:
- 设置头尾指针,当头指针小于尾指针的时候首尾交换,首尾指针自增的同时尾指针自减。
- 利用三变量法进行交换操作。
- 小结:功能要尽量细分,封装,不要全部放一堆,这就是抽象的设计思想,这样以后改起来会很方便的。
- 注意:功能都是包含头不包含尾的!!
- */
- class StringReverseDemo
- {
- public static void main(String[] args)
- {
- //目标字符串
- String str1 = "abcdefghijk";
- //反转全部字符串
- String str2 = reverseString(str1);
- System.out.println(str2);
- //反转指定字符串
- String str3 = reverseString(str1,0,3);//注意:包含头不包含尾
- System.out.println(str3);
- }
- //反转指定字符串
- public static String reverseString(String str,int start ,int end)
- {
- //1 字符串转字符数组
- char[] CharArray = str.toCharArray();
- //2 指定数组元素反转
- reverseArray(CharArray,start,end);
- //3 数组转字符串
- return new String(CharArray);
- }
- //反转全部字符串
- public static String reverseString(String str)
- {
- return reverseString(str,0,str.length());
- }
- //指定数组元素反转
- public static void reverseArray(char[] CharArray,int x,int y)
- {
- //设置头尾指针
- int start = x,end = y-1;
- //当头指针小于尾指针时,首尾交换
- while(start<end)
- swap(CharArray,start++,end--);
- }
- //数组全部反转
- public static void reverseArray(char[] CharArray)
- {
- reverseArray(CharArray,0,CharArray.length);
- }
- //数组指定位置互换操作
- public static void swap(char[] ch,int x,int y)
- {
- //设置一个临时变量,三变量法
- char temp = ch[x];
- ch[x] = ch[y];
- ch[y] = temp;
- }
- }
复制代码
|
|