每日演算法----最後一個單詞的長度----2020/10/15
1. 題目描述
給定一個僅包含大小寫字母和空格 ’ ’ 的字串 s,返回其最後一個單詞的長度。如果字串從左向右滾動顯示,那麼最後一個單詞就是最後出現的單詞。
如果不存在最後一個單詞,請返回 0 。
說明:一個單詞是指僅由字母組成、不包含任何空格字元的 最大子字串。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/length-of-last-word
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
2. 示例
3. 思路
- 從頭開始遍歷,這樣要迴圈一次字串的長度,就可以了,但是時間複雜度太高了,後來換成了從後往前遍歷,這樣就不需要遍歷整個字串,而是當遍歷一個單詞之後遇到空格就直接返回了
4. 遇上的問題
從後往前遍歷的時候會遇到兩種情況,一種結尾是以‘ ’開始的,一種是結尾以單詞開始的。這樣就會判定輸出的時候要進行進一步的判斷,確定遇到空格的時候之前的遍歷是否已經遇到過字元。
5. 具體實現程式碼
自己寫的程式碼
- 從前往後遍歷。
class Solution {
public int lengthOfLastWord(String s) {
int count = 0;
//會遇到的情況是:
// 前面遍歷完單詞的長度之後,遇到空格之後會遇到兩種情況
// 1.遇到空格再遇到空格
// 2.遇到空格再遇到字元
for(int i =0;i<s.length();i++){
//當遇到空格,
if(s.charAt(i)==' '){
//再判斷長度,長度不能抵達最後面
if(i<s.length()-1){
//當連續兩個空格,不能直接返回
if(s.charAt(i+1)==' ')
continue;
//如果後面不是空格證明後面還有單詞則把之前的數清0
else
count=0;
}
else
return count;
}
else{
count++;
}
}
return count;
}
}
- 從後往前遍歷
class Solution {
public int lengthOfLastWord(String s) {
//count用於計數單詞長度
int count = 0;
//通過flag設定,返回時判斷需要
int flag = 0;
if("".equals(s)) return count;
for(int i = s.length()-1;i>0;i--){
//當遇到單詞的時候把flag設定為空
if(s.charAt(i)!=' '){
flag = 1;
count++;
}
//當遇到空格並且該字元前面還有不為空格的字元並且已經遍歷過單詞了,返回
else if(s.charAt(i)==' '&&s.charAt(i-1)!=' '&&flag==1)
return count;
}
if(s.charAt(0)!= ' ') count++;
return count;
}
}
6. 學習收穫,優秀題解一如既往的妙啊
class Solution {
public int lengthOfLastWord(String s) {
int end = s.length() - 1;
//第一個遍歷去除末端所有的空格,遇到字元跳出迴圈
while(end >= 0 && s.charAt(end) == ' ') end--;
//證明字串中不存在單詞
if(end < 0) return 0;
int start = end;
//從最後面的單詞末端開始遍歷,遇到空格跳出迴圈
while(start >= 0 && s.charAt(start) != ' ') start--;
//單詞末端到單詞前端,單詞長度
return end - start;
}
}
作者:guanpengchn
連結:https://leetcode-cn.com/problems/length-of-last-word/solution/hua-jie-suan-fa-58-zui-hou-yi-ge-dan-ci-de-chang-d/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
這樣的話,我的第二個題解,比他優秀一咩咩,感覺到了開心!這個題沒有官方解析,遺憾遺憾。
7 題目來源
要自主學習!------swrici
相關文章
- 每日一道演算法:最後一個單詞的長度演算法
- 每日一練(38):最後一個單詞的長度
- LeetCode每日一題: 最後一個單詞的長度(No.58)LeetCode每日一題
- 字串最後一個單詞的長度字串
- Leetcode 58. 最後一個單詞的長度LeetCode
- leetcode_58_最後一個單詞的長度_簡單LeetCode
- 讓我們一起啃演算法----最後一個單詞的長度演算法
- 【leetcode 簡單】第十四題 最後一個單詞的長度LeetCode
- 最長最短單詞
- 2020-11-7YTUOJ3545: 輸出最長單詞
- go每日新聞--2020-10-15Go
- 基礎程式設計題(PTA) 7-26 單詞長度 (15分)程式設計
- 每日一練(35):最長公共字首
- 2020-10-31 最長公共字首【簡單題14】
- 2020的最後一天
- ESP15單元單詞
- 每日一練(31):翻轉單詞順序
- 每日一詞-normORM
- 每日一詞-factor in
- 每日一詞 sidetrackIDE
- 每日一詞-remainREMAI
- 每日一練(45):長度最小的子陣列陣列
- 【每日一題】無重複字元的最長子串每日一題字元
- LeetCode每日一題:最長公共字首(No.14)LeetCode每日一題
- 每日一算--最長迴文子串
- 每日leetcode——最長公共字首LeetCode
- 每日一詞 35 | appealAPP
- 每日一詞14 vary
- elasticsearch演算法之詞項相似度演算法(一)Elasticsearch演算法
- 經典演算法題每日演練——最長公共子序列演算法
- LeetCode每日一題:反轉字串中的單詞 III(No.557)LeetCode每日一題字串
- Tumblr:2020年度遊戲榜單 最後的生還者未進前十遊戲
- GoCN每日新聞(2020-01-15)Go
- GoCN 每日新聞 (2020-03-15)Go
- GoCN 每日新聞 (2020-04-15)Go
- 【每日一題】力扣1046.最後一塊石頭的重量每日一題力扣
- 每日一詞 24 | factor in2018.10.18
- 每日一詞 47 l equivalentUI