• LeetCode算法题-Number of Segments in a String(Java实现)


    这是悦乐书的第226次更新,第239篇原创

    01 看题和准备

    今天介绍的是LeetCode算法题中Easy级别的第93题(顺位题号是434)。计算字符串中的段数,其中段定义为非空格字符的连续序列。请注意,该字符串不包含任何不可打印的字符。例如:

    输入:“Hello, my name is John”

    输出:5

    本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

    02 第一种解法

    使用正则表达式,将其拆分成字符串数组,数组大小就是最后需要的结果。

    s表示匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ f v]。

    +表示匹配前面的子表达式一次或多次(大于等于1次)。

    在匹配前,我们先要将首尾的空格去掉。

    public int countSegments(String s) {
        String ss = s.trim();
        if (ss.length() == 0) {
            return 0;
        }
        String[] arr = ss.split("\s+");
        return arr.length;
    }
    

    03 第二种解法

    特殊情况:当s为空串或全部为空格组成时,直接返回0。

    正常情况:将s按照空格拆分成字符串数组,然后遍历数组中的每一个元素,只有当前元素不是空串时,记数变量加1,最后返回该记数变量。

    public int countSegments2(String s) {
        if (s.length() == 0 || s.trim().length() == 0) {
            return 0;
        }
        int count = 0;
        String[] arr = s.split(" ");
        for(String str : arr){
            if (!"".equals(str)) {
                count++;
            }
        }
        return count;
    }
    

    04 第三种解法

    特殊情况:当s为空串或全部为空格组成时,直接返回0。

    正常情况:使用for循环,直接判断s中当前字符与前一个字符是否一个为空格,一个不为空格,满足这两条件时,记数变量加1。在循环开始时,索引为0,因此此时是判断索引是否等于0和第一位字符是否不等于空格。

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

    05 小结

    算法专题目前已连续日更超过两个月,算法题文章93+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

    以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

  • 相关阅读:
    Codeforces Round #461 (Div. 2)B-Magic Forest+位运算或优雅的暴力
    动态规划:树形DP
    动态规划:划分DP
    动态规划:状压DP
    图论:树的直径
    图论:点分治
    图论:2-SAT
    数据结构&图论:K短路-可持久化可并堆
    图论:次短路
    图论:曼哈顿距离最小生成树
  • 原文地址:https://www.cnblogs.com/xiaochuan94/p/10247880.html
Copyright © 2020-2023  润新知