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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张耀扬 中级黑马   /  2014-4-9 23:24  /  1200 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个由单词和空格组成的字符串。要按单词为单位翻转字符串。
譬如原始字符串是: The quick brown fox
翻转后的形式    : fox brown quick The

3 个回复

倒序浏览
先把原始字符串按空格分隔成一个字符串数组,然后对这个字符串数组进行反转,再转换成字符串就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);
复制代码

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

回复 使用道具 举报
本帖最后由 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___
复制代码

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

回复 使用道具 举报
大哥,这么长,好歹给加个2分阿。。。两种方法唉。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马