黑马程序员技术交流社区

标题: 字符串反转 [打印本页]

作者: 张耀扬    时间: 2014-4-9 23:24
标题: 字符串反转
一个由单词和空格组成的字符串。要按单词为单位翻转字符串。
譬如原始字符串是: The quick brown fox
翻转后的形式    : fox brown quick The


作者: 清风夜独醉    时间: 2014-4-10 00:22
先把原始字符串按空格分隔成一个字符串数组,然后对这个字符串数组进行反转,再转换成字符串就OK了。
代码如下
  1. String str = "The   quick   brown    fox";       
  2.                 String[] arr = str.split(" +");//用正则表达式按一个或多个空格将原始字符串分割成一个字符串数组
  3.                 StringBuffer sb = new StringBuffer();
  4.                 for(int i=arr.length-1;i>=0;i--){
  5.                         sb.append(arr[i]+" ");//按倒序将字符串数组中的元素装进StringBuffer对象中
  6.                 }
  7.                 str = sb.toString();//转换成字符串
  8.                 System.out.println(str);
复制代码

作者: Linuxgg    时间: 2014-4-10 02:04
本帖最后由 Linuxgg 于 2014-4-10 02:06 编辑
  1.         public static void main(String[] args) {

  2.                 String s = "   The    quick    brown        fox  ";
  3.                 System.out.println("初始字符串["+s+"]");
  4.                 //方法一,反转,但是不保留空格
  5.                 System.out.println("方法一,反转,但是不保留空格------------");
  6.                 String[] news = s.split(" +");
  7.                 for (int i = 1; i < news.length+1; i++) {
  8.                         System.out.print(news[news.length - i] + "_");
  9.                 }
  10.                 System.out.println("\n方法二,反转,并且保留空格------------");
  11.                
  12.                 //方法二,反转,并且保留空格
  13.                 char[] c = s.toCharArray();                                
  14.                 StringBuffer sb = new StringBuffer();
  15.                 StringBuffer sb2 = new StringBuffer("");
  16.                 for (int i = 1; i < c.length + 1; i++) {
  17.                         char c3 = c[c.length - i];
  18.                         if (c3 != ' ') {     //判断是否是空格
  19.                                 if (i != c.length) //判断i是否到最大值,如果不到,继续追加字符到sb2
  20.                                         sb2.append(c3);
  21.                                 else {             //如果到了最大值,追加最后一个字符,并且反转后追加到sb
  22.                                         sb2.append(c3);
  23.                                         sb.append(sb2.reverse().toString());
  24.                                 }

  25.                         } else { //如果是空格,则反转非空格字符串,然后追加
  26.                                 sb.append(sb2.reverse().toString());//碰到空格后反转追加到sb
  27.                                 sb.append("_");
  28.                                 sb2.delete(0, sb2.length()); //清空
  29.                         }
  30.                 }
  31.                 System.out.println(sb);
  32.         }
复制代码


输出结果,为了容易看,输出的时候,空格用"_"代替:
  1. 初始字符串[   The    quick    brown        fox  ]
  2. 方法一,反转,但是不保留空格------------
  3. fox_brown_quick_The__
  4. 方法二,反转,并且保留空格------------
  5. __fox________brown____quick____The___
复制代码

作者: Linuxgg    时间: 2014-4-14 09:55
大哥,这么长,好歹给加个2分阿。。。两种方法唉。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2