剑指offer_44:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“s
- 牛客最近来了一个新员工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 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 stubSystem.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 stubSystem.out.println(ReverseSentence("student. a am I"));}}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
