力扣2788用分隔符拆分字符串
题目来源
力扣2788用分隔符拆分字符串
题目概述
给你一个字符串数组 words 和一个字符 separator ,请你按 separator 拆分 words 中的每个字符串。
返回一个由拆分后的新字符串组成的字符串数组,不包括空字符串 。
注意
separator 用于决定拆分发生的位置,但它不包含在结果字符串中。 拆分可能形成两个以上的字符串。 结果字符串必须保持初始相同的先后顺序。
解题思路
记录相邻两个分隔符的位置,截取子串添加到结果集中。
代码实现
java实现
public class Solution {public List<String> splitWordsBySeparator(List<String> words, char separator) {List<String> result = new ArrayList<>();for (String word : words) {// 前一个分隔符int last = 0;for (int i = 0; i < word.length(); i++) {char current = word.charAt(i);// 遇到后一个分隔符if (current == separator) {// 不是相同的位置就可以分割了if(i > last){result.add(word.substring(last , i));}last = i + 1;}}// 最后如果还有一个,继续分割if (last < word.length()) {result.add(word.substring(last, word.length()));}}return result;}
}
c++实现
class Solution {
public:vector<string> splitWordsBySeparator(vector<string>& words, char separator) {vector<string> result;for (string word : words) {// 前一个分隔符位置int last = 0;for (int i = 0; i < word.length(); i++) {char current = word[i];// 遇到下一个分隔符if (current == separator ) {if (i > last) {result.push_back(word.substr(last, i - last));}last = i + 1;}}// 末尾可能有一个在for循环中拿不到if (last < word.length()) {result.push_back(word.substr(last, word.length() - last));}}return result;}
};