剑指offer_44:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“s

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012429555/article/details/89706015
  1. 牛客最近来了一个新员工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"));
	}

}

猜你喜欢

转载自blog.csdn.net/u012429555/article/details/89706015