LeetCode 434.字符串中的单词数(Number of Segments in a String)C C++

题目链接:https://leetcode-cn.com/problems/number-of-segments-in-a-string/description/

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

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

示例:

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

 统计单词的个数那么就是判断每个字符是否是空格

C:

int countSegments(char* s)
{
    char* pt = s;
    int num = 0;
    while (*pt)
    {
        while (*pt ==' ')
            pt++;
        while (*pt && *pt != ' ')
        {
            pt++;
            if (*pt == ' ' || *pt =='\0')
                num++;
        }
    }
    return num;
}

 

C++:

相比较 C 代码我把 if 放在while 外面,因为上面代码中,每次执行第二个while时都会执一次if,然而单词是连续的话,所以是没必要总是判断 的。但下面这个就不需要总是if 了,不过要注意最后一个单词。

class Solution {
public:
    int countSegments(string s) {
        if (s == "")
            return 0;
        int count = 0;
        int i;
        for (i = 0;i < s.size();i++)
        {
            while (s[i] == ' ')
                i++;
            while (i < s.size() && s[i] != ' ')
                i++;
            if (s[i] == ' ')
                count++;
        }
        count += s[s.size()-1] != ' ';
        return count;
    }
};

谢谢。

你可能感兴趣的:(LeetCode 434.字符串中的单词数(Number of Segments in a String)C C++)