zoukankan      html  css  js  c++  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);
    		
    	}
    
    }
    

      

  • 相关阅读:
    qt example
    http://download.qt-project.org/archive/qt/4.5/qt-all-opensource-src-4.5.2.tar.bz2
    http://qt-project.org/wiki/Category:Developing_with_Qt::QtWebKit#ff7c0fcd6a31e735a61c001f75426961
    aa
    Qt webKit可以做什么(四)--实现本地QObject和JavaScript交互
    Qt Creator needs a compiler set up to build. Configure a compiler in the kit options
    Qt WebKit and HTML5 geolocation | Qt Project forums | Qt Project
    让 QtWebkit 支持跨域CROS
    一万年太久,只争朝夕_散文网
    请问,毛主席他老人家所说的,“一万年太久,只争朝夕。”是什么意思?
  • 原文地址:https://www.cnblogs.com/rolly-yan/p/4044206.html
Copyright © 2011-2022 走看看