LeetCode——434. 字符串中的单词数(Java)

题目描述

题干:
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。

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

题解思路

返回字符串中的单词数,这里注意逗号分割的并不一定是单词

所以很多“优质”的测试用例会让你很多方法失败,比如我一开始想到用split

但是你会发现很多测试用例用空格隔开的根本不是单词所以要根据用例进行增加限制语句

正确代码

    public int countSegments(String s) {
        int ans = 0;

        for (int i = 0; i < s.length(); i++) {
            if ((i == 0 || s.charAt(i - 1) == ' ') && s.charAt(i) != ' ') {
                ans++;
            }
        }
        return ans;
    }

总结

这里总结一下String判断是否为空的几种写法
  • string == null && "".equal(string)

  • string == null && string.length() == 0

  • string == null && string.isEmpty()

  • string == null && string == ""

    顺道提一下isBlank与isEmply,isBlank相比后者增加了判空的范围

    除了为null或长度为0,制表符、空格等空白符(whitespace)都会判为true

    如果文章存在问题或者有更好的题解,欢迎在评论区斧正和评论,各自努力,你我最高处见

posted @ 2021-10-07 08:52  21岁还不是架构师  阅读(26)  评论(0编辑  收藏  举报