LeetCode-434 字符串中的单词数

题目描述

统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。

请注意,你可以假定字符串里不包括任何不可打印的字符。

示例:

输入: "Hello, my name is John"
输出: 5

解题思路

首先理解好题意,知道什么一个单词:对于一个一前一后都被空格所隔开的就是单词(第一个和最后一个可以看成自带一个空格)。这样我们不必关心一个单词里面有什么东西,我们只关心是不是先读一个空格然后再读一个空格,如果是就代表着一个空格。那如何可以快速找出判断是不是有一前一后的两个空格呢,我们只需要设置一个标致mark(bool型),mark为true就代表着已经读到了一个空格,mark为False就意味着没有读到空格。我们只需要每次读到一个不为空格的值再判断mark是否为true(是否刚刚已经读了一个空格)如果都满足我们就count加一,并且把空格置为false,代表着这个单词找完了,需要找下一个单词了,但是如果mark不为true就代表着先前没有读到空格,这个空格是一个单词前面那个,所以此时只需要把mark置为true即可,同时我们需要把mark置为true,为了读第一个单词的时候假定前面也有一个空格

代码实现

#include
#include
#include
using namespace std;
class Solution {
public:
    int countSegments(string s) {
        int cnt = 0;
        bool mark = true;
        for (int i = 0; i < s.size(); i++) {
            if (s[i] != ' ' && mark) {
                cnt++;
                mark = false;
            } else if (s[i] == ' ') mark = true;
        }
        return cnt;
    }
};

你可能感兴趣的:(LeetCode-434 字符串中的单词数)