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

54 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情

一、题目描述:

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

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

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

示例:

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

二、思路分析:

  1. 一个字符串存在多种可能

    • 字符串为空时(自己在想的时候忽略了)
    • 字符串之间空格符数量很多时
    • 字符串头与尾均有很多空格符时
  2. 代码实现:

    • 根据1.(1)的情况首先对空字符串进行判断,若为true则返回0个数
    • 字符串不为空时,对1.(3)的情况进行处理,对两端进行除空字符处理
    • 对字符串进行遍历,当存在空字符串时,表示,空字符串后一定有一个单词,所以count计数加一
    • 由于存在可能存在多个单词,所以需要运用循环进行反复遍历,每次count+1,
    • 便将原字符进行裁剪处理(获取空字符的索引,在空字符处进行剪裁)
    • 根据1.(2)的情况,每次裁剪完需要对字符串进行两端空字符处理
    • 直到新字符串没有空字符时,则跳出循环
    • 因为最后一个单词是不包含空字符的,所以最后计数时需要加一

三、AC 代码:

class Solution {
    public int countSegments(String s) {
        s = s.trim();
        int count = 0;
        if(s.isEmpty()){
            return count;
        }
        while(s.contains(" ")){
            count++;
            s = s.substring(s.indexOf(" ")+1).trim();
        }
        return count+1;
    }
}

范文参考:

【赤小豆の解题】python 字符串模拟 - 字符串中的单词数 - 力扣(LeetCode)

【微扰理论】先读取连续的空格 再 读取连续的非空格 - 字符串中的单词数 - 力扣(LeetCode)