程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Leetcode 詳解(ReverseWords),leetcode151題目詳解

Leetcode 詳解(ReverseWords),leetcode151題目詳解

編輯:JAVA綜合教程

Leetcode 詳解(ReverseWords),leetcode151題目詳解


Leetcode裡面關於字符串的一些問題,描述如下:

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

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

Update (2015-02-12):
For C programmers: Try to solve it inO(1) space.

click to show clarification.

Subscribe to see which companies asked this question

解決方案如下:

import java.util.*;
import java.io.*;
import java.lang.*;

public class ReverseWords {
    
    public String reverseWords(String s) {
         StringBuilder reversed = new StringBuilder();  //構建一個空的字符串構建器
         int j = s.length();
        for (int i = s.length() - 1; i >= 0; i--) {
                if (s.charAt(i) == ' ') {
                    j = i;
}
         else if (i == 0 || s.charAt(i - 1) == ' ') { if (reversed.length() != 0) { //當輸入只有一個字符的時候,如"a",這時候程序會運行到這一步,但注意此時構建器是沒有內容的,因而reversed.length()為0,不滿足條件 reversed.append(' '); // 空格也要輸進去,但同時要避免兩端是空格的情況,那時候是不要輸入的。 } reversed.append(s.substring(i, j)); // 注意此處,運用了字串substring,這個和我之前的想法是一致的,即連接在一起的字符串用substring截取下來。這裡,截取下來後放入字符串構建器中 } // substring(int i,int j) 返回一個新字符串,這個新字符串包含原始字符串中的位置從i~j-1的部分,注意下標不包括j } return reversed.toString(); // 注意這才是字符串構建器的正確輸出格式,返回的是一個與構建器(或稱為緩沖器)內容相同的字符串 } /* private String ReWords(String s) { String B=" "; for(int i=0;i<s.length();i++) { //for(int j=i;s.charAt(j)!="";j++); int j=i; while(Character.isLetter(s.charAt(j))&&(j<s.length()))j++; String A=s.substring(i,j); B=A+B; i=j; } return B; } */ public static void main(String[] args){ ReverseWords Reverse = new ReverseWords(); String out_target=Reverse.reverseWords("ab cac cc"); System.out.printf("the output is "+out_target); System.out.println(); } }

總結:注釋掉的部分,是我自己的思路,但是行不通,主要體現在:我是采用字符串連接的方式解決這個問題的,這樣每次連接字符串都會產生一個心結的String對象,既耗時又浪費空間。並且,思路有點混亂。

cleancode 采用了StringBuilder類,這樣就可以避免上訴的問題。可以認真閱讀StringBuilder類中的相關內容,可以發現是很適合解決這個問題的。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved