这是我参与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)