演算法的實戰(十六):length-of-last-word
阿新 • • 發佈:2018-12-13
一 題目描述
給定一個僅包含大小寫字母和空格 ' '
的字串,返回其最後一個單詞的長度。
如果不存在最後一個單詞,請返回 0 。
說明:一個單詞是指由字母組成,但不包含任何空格的字串。
示例:
輸入: "Hello World" 輸出: 5
二 解題思路
1.先判斷str是否為空或者null,若是,返回0
2.呼叫String.split進行對“ ”進行分割,得到陣列,如果得到的陣列的長度為0,則返回0;否則,然後陣列最後一個索引的值的長度
三 程式碼實戰
public static int lengthOfLastWord(String s) { if(s==null||s.isEmpty()){ return 0; } String[] strs = s.split(" "); System.out.println("length:"+strs.length); if(strs.length<1){ return 0; } return strs[strs.length-1].length(); }
四 優化點
我上述程式碼是呼叫split的方法,這方法其實對整個str進行遍歷,時間複雜度無論如何都已經是O(n),其實本題是要拿最後一個單詞的長度,其實我們可以直接從最尾部進行遍歷,這樣最好的情況是O(l)(l是指最後一個單詞的長度),最壞的情況也是O(n),程式碼例項如下:
public static int lengthOfLastWord(String s) { if(s==null || s.length()==0) return 0; int len = s.length(); int count = 0; for(int i=len-1;i>=0;i--){ if(s.charAt(i)!=' '){ count++; }else if(s.charAt(i)==' '&& count!=0){ return count; } } return count; }