LeetCode-434-字串中的單詞數

雄獅虎豹發表於2021-10-17

字串中的單詞數

題目描述:統計字串中的單詞個數,這裡的單詞指的是連續的不是空格的字元。

請注意,你可以假定字串裡不包括任何不可列印的字元。

示例說明請見LeetCode官網。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/probl...
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

解法一:字串遍歷

首先,如果snull或者s為空字串,則直接返回0。

否則,宣告一個count記錄單詞數量初始化為0,lastChar記錄上一個字元初始值為空格字元,然後遍歷s中的字元c,處理過程如下:

  • 如果clastChar都是空格,則當前不可能是單詞,跳過;
  • 如果上一個字元是空格,當前字元不是空格,則當前字元是一個單詞的開始,count加一,並且將lastChar更新為當前字元;
  • 如果上一個字元和當前字元都不是空格,則跳過;
  • 如果上一個字元不是空格,而當前字元是空格,則上一個字元是上一個單詞的最後一個字元。將lastChar更新為當前字元。

最後,返回count即為字串s中的單詞數。

/**
 * @Author: ck
 * @Date: 2021/9/29 8:51 下午
 */
public class LeetCode_434 {
    public static int countSegments(String s) {
        if (s == null || s.length() == 0) {
            return 0;
        }
        int count = 0;
        char lastChar = ' ';
        for (char c : s.toCharArray()) {
            if (lastChar == ' ' && c == ' ') {
                // 如果上一個字元和當前字元都是空格,則跳過
                continue;
            } else if (lastChar == ' ' && c != ' ') {
                // 如果上一個字元是空格,當前字元不是空格,則當前字元是一個單詞的開始,count加一,並且將lastChar更新為當前字元
                lastChar = c;
                count++;
            } else if (lastChar != ' ' && c != ' ') {
                // 如果上一個字元和當前字元都不是空格,則跳過
                continue;
            } else if (lastChar != ' ' && c == ' ') {
                // 如果上一個字元不是空格,而當前字元是空格,則上一個字元是上一個單詞的最後一個字元。將lastChar更新為當前字元
                lastChar = c;
            }
        }
        return count;
    }

    public static void main(String[] args) {
        // 期望輸出: 5
        System.out.println(countSegments("Of all the gin joints in all the towns in all the world,  "));
    }
}
【每日寄語】 貴在堅持、難在堅持、成在堅持。

相關文章