天天看点

翻转单词顺序(Java 剑指offer)

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

public class stringReverse {

	public String ReverseSentence(String str) {
		
		//trim() ?
		if("".equals(str.trim())) return str;
		String[] word = str.split(" ");
		
		StringBuffer sb = new StringBuffer();
		for(int i=word.length-1;i>=0;i--){
			sb.append(word[i]+" ");
		}
	
		return sb.toString().trim();
	}
	
	public String ReverseSentence3(String str) {
	       String res="",tmp="";
	        for(int i=0;i<str.length();i++){
	            char c=str.charAt(i);
	            if(c==' '){
	                res=" "+tmp+res;
	                tmp="";
	            }else{
	                tmp=tmp+String.valueOf(c);
	            }
	        }
	        if(tmp.length()==0)
	            return res;
	        return tmp+res;
	        //if(res.length()==0)return res;
	       // return tmp+res;
	}
	
	//
	public String ReverseSentence4(String str) {
		if(str == null){ return null;}
		if(str.trim().equals("")){
			return str;
		}
		
		String[] strings = str.split(" ");
		StringBuilder sBuilder = new StringBuilder();
		for(int i = strings.length-1;i>=0;i--){
			if(i==0){
				sBuilder.append(strings[i]);
			}else{
				sBuilder.append(strings[i]);
				sBuilder.append(" ");
			}
		}
		
		String string1 = sBuilder.toString();
		return string1;
	}
	
	public static void main(String[] args) {
		stringReverse st = new stringReverse();
		String str="world. a Wonderful";
		System.out.println(st.ReverseSentence1(str));
	}
}
           

//https://www.nowcoder.com/profile/982154/codeBookDetail?submissionId=150148