每日一题:434. 字符串中的单词数

99 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情

一、题目描述:

434. 字符串中的单词数 - 力扣(LeetCode) (leetcode-cn.com)

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

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

示例:

输入: "Hello, my name is John"
输出: 5
解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单词。

二、思路分析:

看到空格隔开,首先想到split(),split 时间复杂度为O(n),完美解决!

等等,好像有坑,如果单词之间有多个空格或者首字符为空格呢? split() 之后还得判断下数组长度 时间复杂度为 O(n) + O(n/m) m为空格数量,不符合题意

如果遍历char数组呢?当判断从空格到字符时,计数器+1

  1. 初始默认是空格 (当第一个字符非空格时能统计出该单词数量)
  2. 当 当前字符不为空格且上一字符为空格时 计数器+1

三、AC 代码:

public int countSegments(String s) {
        int count =0;
        boolean isSpace=true;
        char[] chars = s.toCharArray();
        for (char c : chars) {
            // 空格 ASCII 为 32
            if(c != 32 && isSpace){
                count ++;
            }
            isSpace = c==32;
        }
        return count;
    }


一定要仔细读题,什么是单词。这里的单词指的是连续的不是空格的字符。
所以说出了空格的其他字符都可认定为单词。

范文参考:

简单字符串判断,当前不为空格且后一位为空格单词加一,到最后一个字符加一 - 字符串中的单词数 - 力扣(LeetCode)

No.434. 【Python】字符串中的单词数(不需要使用库函数,字符串两端也不需要添加额外的空格) - 字符串中的单词数 - 力扣(LeetCode)

php解决字符串中的单词数 - 字符串中的单词数 - 力扣(LeetCode)