A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© itheima_llt 高级黑马   /  2015-4-10 11:26  /  646 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 itheima_llt 于 2015-4-10 12:47 编辑
  1. /*
  2. 将一个字符串进行反转。将字符串中指定部分进行反转,"abcdefg";abfedcg

  3. 分析功能:
  4. 1  功能的结果,反转指定字符串--------------------返回值是String类型。
  5. 2  有没有未知变量--指定字符串,起始位,结束位。--参数类型是(String str,int start,int end)

  6. 思路:因为要指定部分字符串进行反转,就要利用到脚标,继而要利用数组,所以思路如下。
  7. 1  把字符串全部转换为字符数组--char[] toCharArray()
  8. 2  把字符数组全部反转----------自定义一个功能反转数组reverse()
  9. 3  把字符数组全部转换为字符串--构造函数法string new(char[] ch)。或者静态方法static String copyValueOf(char[] ch);
  10. 4  按照指定脚标获取子串--------String substring(String str,int start,int end);注意是包含头部包含尾的。

  11. 数组反转复习:
  12. 设置头尾指针,当头指针小于尾指针的时候首尾交换,首尾指针自增的同时尾指针自减。
  13. 利用三变量法进行交换操作。

  14. 小结:功能要尽量细分,封装,不要全部放一堆,这就是抽象的社级思想,这样以后改起来会很方便的。
  15. 注意:功能都是包含头不包含尾的!!
  16. */
  17. class StringReverseDemo
  18. {
  19.         public static void main(String[] args)
  20.         {
  21.                 //目标字符串
  22.                 String str1 = "abcdefghijk";

  23.                 //反转全部字符串
  24.                 String str2 = reverseString(str1);
  25.                 System.out.println(str2);

  26.                 //反转指定字符串
  27. <span class="Apple-tab-span" style="white-space:pre">                </span>String str3 = reverseString(str1,3,5);
  28.                 System.out.println(str3);
  29.         }
  30.         //反转指定字符串
  31.         public static String reverseString(String str,int start ,int end)
  32.         {
  33.                 //1 反转全部字符串
  34.                 reverseString(str);

  35.                 //2 获取指定子串
  36.                 return str.substring(start,end+1);
  37.         }

  38.         //反转全部字符串
  39.         public static String reverseString(String str)
  40.         {
  41.                 //1 字符串转字符数组
  42.                 char[] CharArray = str.toCharArray();        

  43.                 //2 数组反转
  44.                 reverseArray(CharArray);

  45.                 //3 数组转字符串
  46.                 return new String(CharArray);
  47.         }

  48.         //数组反转
  49.         public static void reverseArray(char[] CharArray)
  50.         {
  51.                 //设置头尾指针
  52.                 int start = 0,end = CharArray.length-1;

  53.                 //当头指针小于尾指针时,首尾交换
  54.                 while(start < end )
  55.                         swap(CharArray,start++,end--);
  56.         }

  57.         //数组指定位置互换操作
  58.         public static void swap(char[] ch,int x,int y)
  59.         {
  60.                 //设置一个临时变量,三变量法
  61.                 char temp = ch[x];
  62.                 ch[x] = ch[y];
  63.                 ch[y] = temp;        
  64.         }
  65. }
复制代码

上面有错误,已经更正!更正后在4楼

字符串反转练习.jpg (69.23 KB, 下载次数: 0)

字符串反转练习.jpg

字符串反转练习结果.jpg (59.81 KB, 下载次数: 0)

字符串反转练习结果.jpg

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

10 个回复

倒序浏览
你的代码只输出了反转的那部分字符串。按你第2行所说,应该输出整个字符串

点评

已经更正  发表于 2015-4-10 12:46
回复 使用道具 举报
fantacyleo 发表于 2015-4-10 11:49
你的代码只输出了反转的那部分字符串。按你第2行所说,应该输出整个字符串 ...

谢谢提醒,我改一下!
回复 使用道具 举报
  1. /*
  2. 将一个字符串进行反转。将字符串中指定部分进行反转,"abcdefg";abfedcg

  3. 分析功能:
  4. 1  功能的结果,反转指定字符串--------------------返回值是String类型。
  5. 2  有没有未知变量--指定字符串,起始位,结束位。--参数类型是(String str,int start,int end)

  6. 思路:因为要指定部分字符串进行反转,就要利用到脚标,继而要利用数组,所以思路如下。
  7. 1  把字符串全部转换为字符数组--char[] toCharArray()
  8. 2  把数组指定元素反转----------自定义一个功能反转数组reverse()
  9. 3  把字符数组全部转换为字符串--构造函数法string new(char[] ch)。或者静态方法static String copyValueOf(char[] ch);
  10. 4  将指定反转的部分做参数传递。

  11. 数组反转复习:
  12. 设置头尾指针,当头指针小于尾指针的时候首尾交换,首尾指针自增的同时尾指针自减。
  13. 利用三变量法进行交换操作。

  14. 小结:功能要尽量细分,封装,不要全部放一堆,这就是抽象的设计思想,这样以后改起来会很方便的。
  15. 注意:功能都是包含头不包含尾的!!
  16. */
  17. class StringReverseDemo
  18. {
  19.         public static void main(String[] args)
  20.         {
  21.                 //目标字符串
  22.                 String str1 = "abcdefghijk";

  23.                 //反转全部字符串
  24.                 String str2 = reverseString(str1);
  25.                 System.out.println(str2);

  26.                 //反转指定字符串
  27.                 String str3 = reverseString(str1,0,3);//注意:包含头不包含尾
  28.                 System.out.println(str3);

  29.         }

  30.         //反转指定字符串
  31.         public static String reverseString(String str,int start ,int end)
  32.         {
  33.                 //1 字符串转字符数组
  34.                 char[] CharArray = str.toCharArray();       

  35.                 //2 指定数组元素反转
  36.                 reverseArray(CharArray,start,end);

  37.                 //3 数组转字符串
  38.                 return new String(CharArray);               
  39.         }

  40.         //反转全部字符串
  41.         public static String reverseString(String str)
  42.         {
  43.                 return reverseString(str,0,str.length());
  44.         }

  45.         //指定数组元素反转
  46.         public static void reverseArray(char[] CharArray,int x,int y)
  47.         {
  48.                 //设置头尾指针
  49.                 int start = x,end = y-1;

  50.                 //当头指针小于尾指针时,首尾交换
  51.                 while(start<end)
  52.                         swap(CharArray,start++,end--);
  53.         }

  54.         //数组全部反转
  55.         public static void reverseArray(char[] CharArray)
  56.         {
  57.                 reverseArray(CharArray,0,CharArray.length);
  58.         }

  59.         //数组指定位置互换操作
  60.         public static void swap(char[] ch,int x,int y)
  61.         {
  62.                 //设置一个临时变量,三变量法
  63.                 char temp = ch[x];
  64.                 ch[x] = ch[y];
  65.                 ch[y] = temp;       
  66.         }
  67. }
复制代码


字符串反转练习结果(更正).jpg (58.88 KB, 下载次数: 0)

字符串反转练习结果(更正).jpg
回复 使用道具 举报
我觉得反转这个可以简单一点的,
就是直接把字符串传给一个StringBuilder。然后sb.reverse()   转成字符串再输出。

点评

嗯嗯,我试试看!在做这个题目的时候主要是针对String常用方法,顺便练习一下抽象的设计思想,学习封装!  发表于 2015-4-10 16:49
回复 使用道具 举报
直接reverse就可以了
回复 使用道具 举报
四季 中级黑马 2015-4-10 22:36:29
7#
这是多线程还是哪的?

点评

标题不是写着字符串吗  发表于 2015-4-10 22:38
回复 使用道具 举报

查了一下,String没有reverse方法的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马