首页 > 代码库 > 【Leetcode】Reverse Words in a String JAVA实现

【Leetcode】Reverse Words in a String JAVA实现

一、题目描述

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

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

二、分析

注意几点:1、当字符串的头部或者尾部存在空格时,最后都将被消除

      2、当两个子字符串之间的空格的个数大于1时,只要保留一个

解题思路:1、首先,将整个字符串进行反转

     2、然后,使用split函数对字符串进行切割;并将得到每个字符串进行反转

     3、最后,在得到的字符串的头部和尾部的空格使用trim()函数去除

 

三、代码实现

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

  四、如果要保留字符串中所有的空格的做法

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

  

【Leetcode】Reverse Words in a String JAVA实现