【Leetcode】Reverse Words in a String JAVA實現

1、題目描述java

Given an input string, reverse the string word by word.app

For example,
Given s = "the sky is blue",
return "blue is sky the".函數

2、分析spa

注意幾點:一、當字符串的頭部或者尾部存在空格時,最後都將被消除code

      二、當兩個子字符串之間的空格的個數大於1時,只要保留一個blog

解題思路:一、首先,將整個字符串進行反轉字符串

     二、而後,使用split函數對字符串進行切割;並將獲得每一個字符串進行反轉input

     三、最後,在獲得的字符串的頭部和尾部的空格使用trim()函數去除string

 

3、代碼實現it

public class Solution {
	
	public String reverse(String s){                //這是對一個字符串的反轉,從尾到頭依次添加到StringBuffer中去
		if(s.length()<=1){
			return s;
		}
		StringBuffer sb =new StringBuffer();
		for(int i=s.length()-1;i>=0;i--){
			sb.append(s.charAt(i));
		}
		return sb.toString();
	}
	/*
	 * 根據字符串中的空格進行分割,並對每一個子字符串進行反轉並在後面添加空格
	 */
	public String reverseWords(String s) {    
		s=reverse(s);
		String[] str=s.split(" ");                        //分割      
		StringBuffer sb =new StringBuffer();
			for(int i=0;i<str.length;i++){ 
				if(!str[i].equals("")){
					sb.append(reverse(str[i])).append(" ");         //將字符串反轉並添加到StringBuffer中去
				}
			}
		return sb.toString().trim();
    }
	
	public static void main(String[] args) {
		String s = " ";
		Solution st= new Solution();
		
		String str=st.reverseWords(s);
		System.out.println(str);
		
	}

}

  4、若是要保留字符串中全部的空格的作法

public class Solution {
	
	public String reverse(String s){                //這是對一個字符串的反轉,從尾到頭依次添加到StringBuffer中去
		if(s.length()<=1){
			return s;
		}
		StringBuffer sb =new StringBuffer();
		for(int i=s.length()-1;i>=0;i--){
			sb.append(s.charAt(i));
		}
		return sb.toString();
	}
	/*
	 * 根據字符串中的空格進行分割,並對每一個子字符串進行反轉並在後面添加空格
	 */

	public String reverseWords(String s) {    
		s=reverse(s);
		String[] str=s.split(" ");
		//System.out.println(str.length);
		StringBuffer sb =new StringBuffer();
		if(str.length!=0){
			for(int i=0;i<str.length-1;i++){     //
				if(!str[i].equals("")){                   //用於判斷當前是是否是空,若是是,則添加空格,若是不是,則反轉字符串
					//str[i]=reverse(str[i]);
					sb.append(reverse(str[i])).append(" ");
				}
				else{
					sb.append(" ");
				}
			}
			sb.append(reverse(str[str.length-1]));   //將最後一個字符串進行反轉,並添加到StringBuffer中
		}
		
		//System.out.println(s.length());
		//System.out.println(sb.length());
		if(sb.length()!=s.length()){           
			/*
			 * 由於字符串進行切割時,會將後來的空格遺棄,(String ="zhao  yan     ",該字符串進行切割時,yan後面的空格將被忽略)
			 * 因此當獲得的字符串長度不等於原字符串長度時,在後面補空格
			 */
			int len=s.length()-sb.length();
			for(int j=0;j<len;j++){
				sb.append(" ");
			}
		}
		//System.out.println(s.length());
		//System.out.println(sb.length());
		return sb.toString();
    }
    
	public static void main(String[] args) {
		String s = " ";
		Solution st= new Solution();
		
		String str=st.reverseWords(s);
		System.out.println(str);
		
	}

}
相關文章
相關標籤/搜索