版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012429555/article/details/89706015
- 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
思路一:用栈辅助解决
package Chap2;
import java.util.Stack;
public class ReverseSentence {
public static String ReverseSentence(String str) {
int len=str.length();
String str_rever="";
str=" "+str;
Stack<Character> stack=new Stack<>();
for (int i = str.length()-1; i>=0; i--) {
if (str.charAt(i)!=' ') {
stack.push(str.charAt(i));
}else {
while (!stack.isEmpty()) {
str_rever+=stack.pop();
}
str_rever+=" ";
}
}
return str_rever.substring(0, len);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(ReverseSentence("student. a am I"));
}
}
思路二:就是将字符串数组拆分方程字符串的数组,然后倒叙输出就行,就注意中间的空格要加上,而在最后的是没有空格的。
public class ReverseSentence {
public static String ReverseSentence(String str) {
if(str.trim().equals("")){
return str;
}
String[] a = str.split(" ");
StringBuffer o = new StringBuffer();
int i;
for (i = a.length; i >0;i--){
o.append(a[i-1]);
if(i > 1){
o.append(" ");
}
}
return o.toString();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(ReverseSentence("student. a am I"));
}
}