10翻转句子中单词的顺序
转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4252235.html
声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己也方便有类似问题的朋友,本文的思想也许有所借鉴,但源码均为本人实现,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明。谢谢。
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。
解题思路:
1.将原字符串以空格为标记拆分成一个字符数组。
2.将该字符串数组的元素翻转。
将翻转后的字符串数组还原成一个字符串。
java源代码:
package com.interview; /** * 题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 * 句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 * 例如输入“I am a student.”,则输出“student. a am I”。 * @author wjh * */ public class _10ReverseWords { /** * @param args */ public static void main(String[] args) { String s = "I am a student, your are my teacher!"; System.out.println("原字符串:\n"+s); String newSteing = reverse(s); System.out.println("转换后的字符串:\n"+newSteing); } //翻转 private static String reverse(String s){ String[] strs = s.split(" "); //以空格对原字符串进行拆分 int n = strs.length; for(int i=0;i<n/2;i++){ //交换 String temp = strs[i]; strs[i] = strs[n-i-1]; strs[n-i-1] = temp; } //将字符串数组转换成一个字符串 StringBuffer newString = new StringBuffer(); for(int i=0;i<n-1;i++){ newString.append(strs[i]+" "); } newString.append(strs[n-1]); return newString.toString(); } }
运行效果:
原字符串:
I am a student, your are my teacher!
转换后的字符串:
teacher! my are your student, a am I