将一个英文句子反转, e.g. much. very you love I => I love you very much.

import java.util.Stack;

import java.util.StringTokenizer;

/**

* 将一个英文句子反转, e.g. much. very you love I => I love you very much.

*/

public class WordsReverse {

// spilt StringBuilder

public static String reverse1(String str) {

if (str == null || str.trim().equals("")) {

return str;

}

StringBuilder re = new StringBuilder();

String[] words = str.split(" ");

for (int length = words.length, i = length - 1; i >= 0; i--) {

re.append(words[i]);

if (i != 0) {

re.append(" ");

}

}

return re.toString();

}

// charAt StringBuilder

public static String reverse2(String str) {

if (str == null || str.trim().equals("")) {

return str;

}

StringBuilder re = new StringBuilder(str.length());

int pos = 0;

for (int length = str.length(), i = 0; i < length; i++) {

char ch = str.charAt(i);

if (ch == ' ') {

pos = 0;

}

re.insert(pos, ch);

if (ch != ' ') {

pos++;

}

}

return re.toString();

}

// StringTokenizer Stack StringBuilder

public static String reverse3(String str) {

if (str == null || str.trim().equals("")) {

return str;

}

StringTokenizer token = new StringTokenizer(str, " ");

Stack stack = new Stack();

while (token.hasMoreElements()) {

stack.push(token.nextToken());

}

StringBuilder re = new StringBuilder(str.length());

for (int length = stack.size(), i = 0; !stack.isEmpty(); i++) {

re.append(stack.pop());

if (i != length - 1) {

re.append(" ");

}

}

return re.toString();

}

// charAt Stack StringBuilder

public static String reverse4(String str) {

if (str == null || str.trim().equals("")) {

return str;

}

Stack stack = new Stack();

final int RESET = -1;

int start = RESET;

for (int length = str.length(), i = 0; i < length; i++) {

char ch = str.charAt(i);

if (ch != ' ' && start == RESET) {// word started

start = i;

} else if ((ch == ' ') && start != RESET) {// find word

stack.push(str.substring(start, i));

start = RESET;

} else if ((i == length - 1) && start != RESET) {// find word

stack.push(str.substring(start, i + 1));

start = RESET;

}

}

StringBuilder re = new StringBuilder(str.length());

for (int length = stack.size(), i = 0; !stack.isEmpty(); i++) {

re.append(stack.pop());

if (i != length - 1) {

re.append(" ");

}

}

return re.toString();

}

public static void main(String[] args) {

long beginTime = System.currentTimeMillis();

System.out.println(reverse1(null) + "|");

System.out.println(reverse1("") + "|");

System.out.println(reverse1(" ") + "|");

System.out.println(reverse1(" ") + "|");

System.out.println(reverse1(" ") + "|");

System.out.println(reverse1(" BB ") + "|");

System.out.println(reverse1(" AA BB ") + "|");

System.out.println(reverse1("ABC is a pig.") + "|");

System.out.println(reverse1(" ABC is a pig. ") + "|");

reverse1(longString);

System.out.println("spend time:"

+ (System.currentTimeMillis() - beginTime));

beginTime = System.currentTimeMillis();

System.out.println(reverse2(null) + "|");

System.out.println(reverse2("") + "|");

System.out.println(reverse2(" ") + "|");

System.out.println(reverse2(" ") + "|");

System.out.println(reverse2(" ") + "|");

System.out.println(reverse2(" BB ") + "|");

System.out.println(reverse2(" AA BB ") + "|");

System.out.println(reverse2("ABC is a pig.") + "|");

System.out.println(reverse2(" ABC is a pig. ") + "|");

reverse2(longString);

System.out.println("spend time:"

+ (System.currentTimeMillis() - beginTime));

beginTime = System.currentTimeMillis();

System.out.println(reverse3(null) + "|");

System.out.println(reverse3("") + "|");

System.out.println(reverse3(" ") + "|");

System.out.println(reverse3(" ") + "|");

System.out.println(reverse3(" ") + "|");

System.out.println(reverse3(" BB ") + "|");

System.out.println(reverse3(" AA BB ") + "|");

System.out.println(reverse3("ABC is a pig.") + "|");

System.out.println(reverse3(" ABC is a pig. ") + "|");

reverse3(longString);

System.out.println("spend time:"

+ (System.currentTimeMillis() - beginTime));

beginTime = System.currentTimeMillis();

System.out.println(reverse4(null) + "|");

System.out.println(reverse4("") + "|");

System.out.println(reverse4(" ") + "|");

System.out.println(reverse4(" ") + "|");

System.out.println(reverse4(" ") + "|");

System.out.println(reverse4(" BB ") + "|");

System.out.println(reverse4(" AA BB ") + "|");

System.out.println(reverse4("ABC is a pig.") + "|");

System.out.println(reverse4(" ABC is a pig. ") + "|");

reverse4(longString);

System.out.println("spend time:"

+ (System.currentTimeMillis() - beginTime));

}

static String t = "das dasd sad asd sdsa as as dasd sdasdad adasdsd as dsa d asd sa d asd as das d sad asdd as das d asd as das d asd as d sad a sd asd as da sda ds ";

static String longString = t + t + t + t + t + t + t + t + t + t + t + t

+ t + t + t + t + t + t + t + t + t + t + t + t + t + t + t + t + t

+ t + t + t + t + t + t + t + t + t + t + t + t + t + t + t + t + t;

}

输出:

null|

|

|

|

|

BB  |

BB AA |

pig. a is  ABC|

pig. a is  ABC |

spend time:14

null|

|

|

|

|

BB  |

BB AA |

pig. a is  ABC|

pig. a is  ABC |

spend time:8

null|

|

|

|

|

BB|

BB AA|

pig. a is ABC|

pig. a is ABC|

spend time:5

null|

|

|

|

|

BB|

BB AA|

pig. a is ABC|

pig. a is ABC|

spend time:3

20120425写的新方法:

import java.util.Stack;

public class Demo {

/**

* 反转字符串的单词顺序

*/

public static void main(String[] args) {

String str = "hello world is demo";

System.out.println(reverse(str));

}

static String reverse(String str) {

StringBuilder sb = new StringBuilder(str.length());

Stack stack = new Stack();

int i = str.length() - 1;

while (i >= 0) {//从尾部开始遍历

char ch = str.charAt(i);

if (ch == ' ') {//遇到空格,则说明找到单词,将单词取出

while (!stack.isEmpty()) {

sb.append(stack.pop());

}

sb.append(ch);

} else {//遇到非空格,则字符入栈

stack.push(ch);

}

i--;

}

while (!stack.isEmpty()) {

sb.append(stack.pop());

}

return sb.toString();

}

}

c语言实现英文句子反转,将一个英文句子反转相关推荐

  1. 怎么用c语言判断是否为纯字母,c语言如何判断字符是否为英文字母isalpha()学习...

    c语言如何判断字符是否为英文字母?我们可以使用isalpha()方法就可以了.定义函数:int isalpha(int c); isalpha()函数介绍:判断参数 c 是否为英文字母,在标准c 语言 ...

  2. 2021_01_22_R语言在空间可视化方面的英文书籍推荐

    R语言在空间可视化方面的英文书籍推荐 #这是我的第一篇blog! #接触R语言在地理空间可视化的应用方向已有接近2个月! #我整理了几本很好的英文书籍,特别有针对性,针对一些想用R在城市规划设计专业中 ...

  3. c语言上错误的英文,c语言简单问题,输入一行英文,提取其中的单词。总是有个错误找不到,麻烦高手...

    c语言简单问题,输入一行英文,提取其中的单词.总是有个错误找不到,麻烦高手 关注:73  答案:6  信息版本:手机版 解决时间 2019-01-13 19:39 放下 2019-01-13 14:5 ...

  4. 综述论文要写英文摘要吗_英文论文的写作讲解 写好英文论文要注意这三点

    英文论文该如何修改呢 Foreign paper writing English paper how to modify it 英文论文完成后该如何修改 很多留学生在写完英文论文后就什么都不管了,其实 ...

  5. 很高兴加入 英文_4岁娃英文词汇3000+,我是怎样做到的

    先先四岁裸考剑桥国际儿童英语三级,拿到了excellent的证书.这个考试以对话为主,三级加上了部分笔试.回家我顺便给他测了下听力和阅读词汇量以及蓝思指数(Lexile),他的听力词汇近4000,阅读 ...

  6. html 标签英文全称,html标签英文全称

    更新: 2017/06/09 最近网页开发,一直会查html和css 感觉之前写的这个太杂了,现在主要是先查这个博文,然后查文档. ---------------------------------- ...

  7. String案例 练习: 将一个字符串进行反转

    package Day12; /* 练习: 将一个字符串进行反转 "abcdefg" 思路:1.曾经学习过数组的元素反转2.将字符串变成数组 对其进行反转3.将反转后的数组变成字符 ...

  8. 将一个字符串进行反转。将字符串中指定部分进行反转

    题目说明: 将一个字符串进行反转.将字符串中指定部分进行反转.比如"abcdefg"反转为"abfedcg" public class StringDemo { ...

  9. 计算机软件的英文翻译,软件的英文翻译

    软件的英文翻译 软件的英文: (computer) software 参考例句: Anti-virus software 防病毒软件Software Download Area 软件下载区Public ...

最新文章

  1. cad卸载_30年CAD老师傅一步步教你怎么把CAD卸载得一干二净
  2. springboot4.1.1的log4j2配置
  3. SharePoint中的权限体系
  4. 网页html语言怎么看,怎样查看网页的css代码?
  5. viewpager 自定义翻页效果_Android RecyclerView自定义LayoutManager
  6. 【kafka】Kafka JMX监控报错 Failed to get broker metrics for BrokerIdentity
  7. 美团 -python
  8. Android获取md5和sha
  9. php表单提交 邮箱_PHP的一个基础知识 表单提交
  10. [笔记]Windows核心编程《二十二》注入DLL和拦截API
  11. 好工具,不私藏!介绍一个提高效率的利器
  12. 初识Hadoop(核心组件与应用)
  13. 天线远场定义_暗室静区及天线近场和远场的介绍
  14. Flink SQL 之 Calcite Volcano优化器(源码解析)
  15. setoolkit制作钓鱼网站
  16. endnote插入参考文献
  17. 分布式高并发下,Actor模型如此优秀
  18. PowerApps教程07-记录的详细信息显示
  19. 编译原理:语法制导翻译
  20. 新春快乐!马年大吉!518

热门文章

  1. 织梦dede标签tags的美化教程
  2. 用Python做FFmpeg批处理之:指定帧率放慢/加快视频。
  3. java求两个数的平均值-这么简单我竟然不会?
  4. 启用win10自动登录
  5. 企业的好坏,跟员工无关
  6. 按照图片名称移动到文件夹中保存
  7. Markdown语法总结+Typora快捷键
  8. 【二维练习】多段线PL命令绘制“雨伞”
  9. Spring Boot整合Security+Swagger2踩坑记录,Swagger2无法访问首页
  10. 不可复制的AI螺旋:HUAWEI P20的“长板理论 ”