【剑指Offer】44、翻转单词顺序列

题目描述

牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?

题解一:使用栈操作
 1 public static String ReverseSentence(String str) {
 2     ////trim():删除了原始字符串头部和尾部的空格,这个语句意思为:字符串只有一个以上空格返回本身
 3         if (str.trim().equals("") && str.length() > 0) {
 4             return str;
 5         }
 6         Stack<Object> stack = new Stack<>();
 7         String string = str.trim();
 8         String[] strings = string.split(" ");//将字符串以空格隔开,拆分成为字符串数组
 9         for(int i=0;i<strings.length;i++){
10             stack.push(strings[i]);
11         }
12         string = (String) stack.pop();
13         while (!stack.isEmpty()) {
14             string = string + " " + stack.pop();
15         }
16         return string;
17     }
题解二:StringBuffer字符串拼接
 1  public static String ReverseSentence2(String str) {
 2         if(str.trim().equals("")){
 3             return str;
 4         }
 5         String[] a = str.split(" ");
 6         StringBuffer sb = new StringBuffer();
 7         for (int i = a.length; i >0;i--){
 8             sb.append(a[i-1]);
 9             if(i > 1){
10                 sb.append(" ");
11             }
12         }
13         return sb.toString();
14     }
15 //测试
16   public static void main(String[] args) {
17          String string=" ";
18         System.out.println(string.trim().equals(""));//空字符串的结果为true
19         System.out.println(string.length());
20         String string1="student. a am I";
21         String s = ReverseSentence(string1);
22         String s1 = ReverseSentence2(string1);
23         System.out.println(s);
24         System.out.println(s1);
25     }

猜你喜欢

转载自www.cnblogs.com/Blog-cpc/p/12306997.html
今日推荐