程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> LeetCode-lengthOfLastWord

LeetCode-lengthOfLastWord

編輯:C++入門知識

LeetCode-lengthOfLastWord


題目是求一個字符串中,最後一個單詞的長度   例如:   "" = 0   "  " =0   "length of last word    " = 4   這個題目主要的坑在哪裡呢,就是要判斷一些特殊的情況,這裡例舉一下:   1.空字符串以及 NULL 判斷是必須的。   2.字符串為一個或多個空格,或者最後一個單詞後面又跟了空格       復制代碼  1 class Solution {  2 public:  3     int lengthOfLastWord(const char *s) {  4         if (s == NULL) {  5             return 0;  6         }  7       8         int result = 0;  9          10         // 當前字符 沒結束 11         while (*s != '\0') { 12             if (*s == ' ') { 13                 while (s != NULL && *s == ' ') { 14                     s++; 15                 } 16             } 17             else { 18                 int cur = 0; 19                 while (*s != '\0' && *s != ' ') { 20                     cur++; 21                     s++; 22                 } 23                 result = cur; 24             } 25         } 26         return result; 27     } 28 }; 復制代碼 上述代碼通過了 Leetcode,如果傳遞的 字符串是一個obj,還可以通過獲取obj.length 從後往前面查找,這裡是只傳遞一個起始的字符指針。   首先進行NULL值的判斷,然後當指針 s 不為結束符號 '\0' 進行遍歷,遍歷的時候,只有兩種情況,一個是遇到空格,另一個是遇到字符,。   遇到的空格可能有多個,即連續的空格,這個時候,可以選擇將空格“吃掉”,即多個空格也抽象成一個空格處理。   遇到字符時,即表示,當前是一個單詞,至於這個單詞有多長,我們一直往後面搜索就可以了,同時用一個臨時變量 cur 來保存當前 word 的長度 ,s 遇到空格或者結束符號 ’\0‘ 就先停下來,形成一個 word,然後把 word 傳值給 result,因為遇到了空格,所以將接下來的任務交給處理空格的 if 判斷來處理。       算法總體上抽象為兩個分支,遇到空格的情況,以及遇到字符,每次形成一個word,則將其賦值給 result,為什麼要用臨時變量 cur 呢?   因為如果在 空格判斷中另 result = 0,word 判斷中 result= word.length,那麼就會出現bug,這種bug出現在 字符串尾部有空格的情況下。    

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