Leecode刷题之旅-C语言/python-434 字符串中的单词数

/*
 * @lc app=leetcode.cn id=434 lang=c
 *
 * [434] 字符串中的单词数
 *
 * https://leetcode-cn.com/problems/number-of-segments-in-a-string/description/
 *
 * algorithms
 * Easy (29.13%)
 * Total Accepted:    4.2K
 * Total Submissions: 14.2K
 * Testcase Example:  '"Hello, my name is John"'
 *
 * 统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
 * 
 * 请注意,你可以假定字符串里不包括任何不可打印的字符。
 * 
 * 示例:
 * 
 * 输入: "Hello, my name is John"
 * 输出: 5
 * 
 * 
 */
int countSegments(char* s) {
    if(s==NULL||strlen(s)==0) return 0;
    int i=0,j,count=0;
    while(i<strlen(s)){
        while(i<strlen(s)&&s[i]==' ') i++;//i每次移到第一个非空格处
        j = i;
        while(j<strlen(s)&&s[j]!=' ')j++;//j每次移到第一个空格处,i和j之间就是一个单词
        if(i<j){
            i=j;
            count++;
        }
        else
        {
            return count;//当最后一个单词后面有空格时,从此出口结束。
        }
    }
    return count;//当最后一个单词后面没有空格时,从此出口结束。
}

思路是 双指针,i找到第一个非空格字符,j从i的位置开始找到第一个为空格的字符,i<j,那么ij之间的就是一个单词,计数就加一,然后i移动到j的位置进行下一次寻找。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

python:

#
# @lc app=leetcode.cn id=434 lang=python3
#
# [434] 字符串中的单词数
#
# https://leetcode-cn.com/problems/number-of-segments-in-a-string/description/
#
# algorithms
# Easy (29.13%)
# Total Accepted:    4.2K
# Total Submissions: 14.2K
# Testcase Example:  '"Hello, my name is John"'
#
# 统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
# 
# 请注意,你可以假定字符串里不包括任何不可打印的字符。
# 
# 示例:
# 
# 输入: "Hello, my name is John"
# 输出: 5
# 
# 
#
class Solution:
    def countSegments(self, s: str) -> int:
        return len(s.split())
        

python就很简单了。一个split搞定。

猜你喜欢

转载自www.cnblogs.com/lixiaoyao123/p/10564208.html