LeetCode.434 字符串中的单词数

152 阅读2分钟

这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战

题目描述:

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

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

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

示例

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

思路分析

模拟

根据题意,单词指的是连续不是空格的字符串,即单词是以一个或多个空位为分解。

那目标就很明确了,我们只要找到空格即可。

如果这个字符不为空,且他前一个是空,则前一个一定是个单词,这里我们可以第一个单独判断(因为他没有前一个)。

当然我们也可以用一些语言内置的splite方法分割也行。

AC代码

class Solution {
    fun countSegments(s: String): Int {
        var n = 0
        s.forEachIndexed { index, c ->
            if((index == 0 || s[index - 1] == ' ') && c != ' '){
                n ++
            }
        }
        return n
    }
}

总结

还是非常简单的一题,但是看到一些解法明显是有问题的,比如后面加空格的,如果本身后面有多个空格,这应该是不会通过的,但是本题又没有说有可以假设的情况,也许测试用例不够吧。

参考

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

【宫水三叶】简单字符模拟题 - 字符串中的单词数 - 力扣(LeetCode) (leetcode-cn.com)

【ACM金牌题解】有效代码五行 | 编程熊 - 字符串中的单词数 - 力扣(LeetCode) (leetcode-cn.com)

Kotlin + 循环判断 - 字符串中的单词数 - 力扣(LeetCode) (leetcode-cn.com)