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); } }