自学内容网 自学内容网

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

在这里插入图片描述
我们可以先自己模拟一下分隔字符串的过程。如果只是简单的,遇到分隔符,将分隔符前后的子串加入结果的List,那么很显然并没有考虑到一个String中有多个字符串的情况。一种比较容易想到的方法是:

  1. 先对List中每个字符串遍历;
  2. 对于每个字符串内部,维护一个缓冲区;
  3. 遍历一个字符串时,若遇到分隔符,且缓冲区不为空,则将缓冲区内容加入result,并清空缓冲区;若未遇到分隔符,则将当前字符加入缓冲区;
  4. 遍历完该字符串后,还要检查一边缓冲区,若不为空,将剩余字符串也加入result;
  5. 对每个字符串重复2-4步的操作即可。

实现代码如下:

class Solution {
 public List<String> splitWordsBySeparator(List<String> words, char separator) {
    List<String> res = new ArrayList<>();
    for(String str:words) {
    //相当于为每个单词维护一个临时缓冲区
    StringBuilder sb = new StringBuilder();
    for(int i=0;i<str.length();i++) {
    //若遇到分隔符,且缓冲区不为空
    //将缓冲区内容加入res,清空缓冲区
    if(str.charAt(i)==separator) {
    if(sb.length()>0) {
    res.add(sb.toString());
    sb.setLength(0);
    }
    }
    //若未遇到分隔符,则当前字符加入缓冲区sb
    else {
    sb.append(str.charAt(i));//这个append方法是用StringBuilder的关键
    }
    }
    //遍历完成后,若缓冲区还有剩余字符,全部加入res
    if(sb.length()>0) {
    res.add(sb.toString());
    }
    }
    return res;
    }
}

原文地址:https://blog.csdn.net/ignb6666/article/details/135723389

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!