题目描述
牛客最近来了一个新员工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 }
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 }