首页 > 学院 > 开发设计 > 正文

华为机试-单词倒排

2019-11-06 06:34:37
字体:
来源:转载
供稿:网友

题目描述 对字符串中的所有单词进行倒排。 说明: 1、每个单词是以26个大写或小写英文字母构成; 2、非构成单词的字符均视为单词间隔符; 3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符; 4、每个单词最长20个字母;

输入描述: 输入一行以空格来分隔的句子

输出描述: 输出句子的逆序

输入例子: I am a student

输出例子: student a am I


思路:先把字符串中的其他字符用单个空格代替,在二次翻转字符串,也就是先对整个字符串翻转,然后对每个子串再翻转。


import java.util.Scanner;public class WordReverse { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); while(sc.hasNext()) { String words=sc.nextLine(); wordReverse(words); } } public static void wordReverse(String words) { StringBuffer rWords=new StringBuffer(); int len=words.length(),flag=1; for(int i=0;i<len;i++) { char ch=words.charAt(i); if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z') { rWords.append(ch); flag=0; } else { flag++; if(flag==1) { rWords.append(" "); } } } if(rWords.charAt(rWords.length()-1)==' ') { rWords.deleteCharAt(rWords.length()-1); } rWords.reverse(); String sp[]=rWords.toString().split(" "); StringBuffer sb=new StringBuffer(); int i=0; for(;i<sp.length-1;i++) { sb.append(new StringBuffer(sp[i]).reverse()+" "); } sb.append(new StringBuffer(sp[i]).reverse()); System.out.PRintln(sb); }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表