LeetCode.2788. 按分隔符拆分字符串

题目

题目链接

分析

题目的意思是给我们一个字符串数组和一个分隔符,让我们按照分隔符把字符串数组分割成新的字符串数组。

看到这个描述,这不就是直接就是利用 按照分隔符分割字符串的系统库函数split(),这个函数的意思就是 把一个字符串按照你给定的分隔符分割成字符串数组,如:“one.two.three”

    public static void main(String[] args) {
        String s = "one.two.three";
        String[] strings = s.split(".");
        System.out.println(Arrays.asList(strings));
    }

运行代码后发现:
LeetCode.2788. 按分隔符拆分字符串_第1张图片

????

什么鬼,不应该是 [one, two, three]才对嘛,点击查看字符串的split()方法查看源码,注释上明确写了,split()参数是正则表达式,而.在正则表达式有特殊的含义,所以我们应该参数写\\.,利用转义字符进行转义,写出的代码如下:

    public static void main(String[] args) {
        String s = "one.two.three";
        String[] strings = s.split("\\.");
        System.out.println(Arrays.asList(strings));
    }

运行结果:
LeetCode.2788. 按分隔符拆分字符串_第2张图片


代码

我们现在已经知道了如何利用给定分割字符分割字符串了,我们就可以写代码了。

class Solution {
    public List<String> splitWordsBySeparator(List<String> words, char separator) {
        List<String> res = new ArrayList<>();
        for(String s : words) {
            // 按照给定分割字符分割字符串
            String[] str = s.split("\\"+String.valueOf(separator));
            for(String st : str) {
                // 为了去除空字符串
                if(st != null && st.length() > 0)
                res.add(st);
            }
        }
        return res;
    }
}

运行:
LeetCode.2788. 按分隔符拆分字符串_第3张图片

你可能感兴趣的:(leetcode刷题,java,leetcode,算法,每日一题)