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;
}

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

相关推荐
边境悍匪7 分钟前
蜗牛学苑 Java 智能体学习 Day49|贯穿项目 5 订单下单业务 思维导图复盘
java·开发语言·spring boot·学习·阿里云
轩轶子8 分钟前
Python CLI Todo:一次数据结构错误引发的 Bug
数据结构·python·bug
鬼手点金10 分钟前
Claude Code示范案例-修复 Bug 工作流
java·服务器·前端·javascript·bug·openclaw
一条破秋裤11 分钟前
Linux 进程通信介绍:内存隔离与 IPC 分类
java·linux·服务器
Omics Pro14 分钟前
空间组学!医学代谢显微工具
数据库·人工智能·算法·机器学习·自然语言处理
Coder-magician18 分钟前
《代码随想录》刷题打卡day44:图论-part02
算法·深度优先·图论
克里斯蒂亚诺更新19 分钟前
理解机器学习的各种算法
人工智能·算法·机器学习
机核研创社22 分钟前
polo 长袖短裤套装自动化产线:八台机器排队接力
android·java·自动化
小范的技术工坊23 分钟前
大模型学习操作文档(13个核心概念串讲)
人工智能·学习·算法·大模型
一个低调的青年32 分钟前
电池健康状态估计(一)
经验分享·笔记·其他·算法·模型