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

2024.1.20

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

题目来源

力扣每日一题;题序:2788

我的题解

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

直接调用相关API
时间复杂度 :O(n)。没有考虑API内部时间
空间复杂度:O(1)。没考虑API内部细节

java 复制代码
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大小

java 复制代码
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;
}

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

相关推荐
csdn_aspnet12 小时前
PHP 算法 LeetCode 编号 70 - 爬楼梯
算法·leetcode·php
沈浩(种子思维作者)12 小时前
没有错误,正确将一文不值
人工智能·python·算法·量子计算
x_xbx12 小时前
LeetCode:5. 最长回文子串
算法·leetcode·职场和发展
快手技术12 小时前
免费报名|生成式推荐技术如何实现体系化演进?快手技术沙龙第四期开启!
算法
初夏睡觉12 小时前
数字截断求和 题解
算法
AZaLEan__12 小时前
多源 BFS
java·开发语言·算法
程序员卷卷狗12 小时前
Java转Go面试速记:Go基础22问,一篇理清高频易错点一篇理清高频易错点
java·面试·golang
zzzzz36912 小时前
快速搭建SpringAi项目 集成智能问答,RAG,FUINCTION_CALLING等功能
java·ai编程
smith成长之旅12 小时前
07 | Mem0 框架分析:三路信号融合——语义 + BM25 + Entity Boost 的混合检索
python·算法
wabs66612 小时前
关于贪心算法章节的【有两个维度问题】的自我总结
算法·贪心算法