ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

2024.1.20力扣每日一题——按分隔符拆分字符串

2026/8/2 21:53:47 拓冰建站 浏览量
2024.1.20力扣每日一题——按分隔符拆分字符串

2024.1.20

      • 题目来源
      • 我的题解
        • 方法一 API工程师(String.split+Stream)
        • 方法二 模拟

题目来源

力扣每日一题;题序:2788

我的题解

方法一 API工程师(String.split+Stream)

直接调用相关API

时间复杂度:O(n)。没有考虑API内部时间
空间复杂度:O(1)。没考虑API内部细节

public List<String> splitWordsBySeparator(List<String> words, char separator) {List<String> res=new ArrayList<>();for(String s :words){res.addAll(Arrays.stream(s.split("\\"+separator)).filter(c->!c.isEmpty()).collect(Collectors.toList()));}return res;}
方法二 模拟

模拟分割

时间复杂度:O(nm)。n是中的字符串数,m是最长字符串的长度
空间复杂度:O(m)。在分割函数中存储结果的list大小

public List<String> splitWordsBySeparator(List<String> words, char separator) {List<String> res=new ArrayList<>();for(String s :words){res.addAll(split(s,separator));}return res;
}
public List<String> split(String s,char separator){int n=s.length();int left=0,right=0;List<String> res=new ArrayList<>();while(right<n){while(right<n&&s.charAt(right)!=separator){right++;}String t=s.substring(left,right);if(!t.isEmpty())res.add(t);left=right+1;right=left;}return res;
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~