Example 38
字符串中的单词数
题目概述:统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
示例:
输入: "Hello, my name is John"
输出: 5
解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单词。
解题思路:计算字符串中单词的数量,就等同于计数单词的第一个下标的个数。因此,我们只需要遍历整个字符串,统计每个单词的第一个下标的数目即可。
满足单词的第一个下标有以下两个条件:
该下标对应的字符不为空格;
该下标为初始下标或者该下标的前下标对应的字符为空格;
示例代码如下:
public class NumberOfWordsInString { /** * 统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。 * 请注意,你可以假定字符串里不包括任何不可打印的字符。 * 示例: * 输入: "Hello, my name is John" * 输出: 5 * 解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单词。 * 来源:力扣(LeetCode) * 链接:https://leetcode.cn/problems/number-of-segments-in-a-string */ public static void main(String[] args) { NumberOfWordsInString nowis = new NumberOfWordsInString(); System.out.println(nowis.countSegments("Hello, my name is John")); // 5 } /** * 官方 * @param s * @return */ public int countSegments(String s) { int segmentCount = 0; for (int i = 0; i < s.length(); i++) { if ((i == 0 || s.charAt(i - 1) == ' ') && s.charAt(i) != ' ') { segmentCount++; } } return segmentCount; } }