给你一个字符串数组 words
和一个字符 separator
,请你按 separator
拆分 words
中的每个字符串。
返回一个由拆分后的新字符串组成的字符串数组,不包括空字符串 。
注意
separator
用于决定拆分发生的位置,但它不包含在结果字符串中。示例 1:
输入:words = [“one.two.three”,“four.five”,“six”], separator = “.”
输出:[“one”,“two”,“three”,“four”,“five”,“six”]
解释:在本示例中,我们进行下述拆分: “one.two.three” 拆分为 “one”, “two”, “three” “four.five” 拆分为 “four”, “five” “six” 拆分为 “six” 因此,结果数组为 [“one”,“two”,“three”,“four”,“five”,“six”] 。
示例 2:
输入:words = [“$easy$”,“$problem$”], separator = “$”
输出:[“easy”,“problem”]
解释:在本示例中,我们进行下述拆分: “$easy$” 拆分为 “easy”(不包括空字符串) “$problem$” 拆分为 “problem”(不包括空字符串) 因此,结果数组为 [“easy”,“problem”] 。
示例 3:
输入:words = [“|||”], separator = “|”
输出:[]
解释:在本示例中,“|||” 的拆分结果将只包含一些空字符串,所以我们返回一个空数组 [] 。
提示:
1 <= words.length <= 100
1 <= words[i].length <= 20
words[i]
中的字符要么是小写英文字母,要么就是字符串 ".,|$#@"
中的字符(不包括引号)separator
是字符串 ".,|$#@"
中的某个字符(不包括引号)很简单的题目,直接调API即可。注意分割后得到的空串需要排除掉。
class Solution:
def splitWordsBySeparator(self, words: List[str], separator: str) -> List[str]:
ans = list()
for word in words:
# 直接使用字符串的split()方法
new_list = word.split(separator)
# 注意排除掉空串,排除空串后的数组加在ans后面
ans += [new for new in new_list if new]
return ans
public class Solution {
public List<String> splitWordsBySeparator(List<String> words, char separator) {
List<String> ans = new ArrayList<>();
for (String word : words) {
// 使用 StringTokenizer 实现分割
StringTokenizer tokenizer = new StringTokenizer(word, String.valueOf(separator));
while (tokenizer.hasMoreTokens()) {
String newWord = tokenizer.nextToken();
// 注意排除掉空串
if (!newWord.isEmpty()) {
ans.add(newWord);
}
}
}
return ans;
}
}
class Solution {
public:
std::vector<std::string> splitWordsBySeparator(std::vector<std::string>& words, char separator) {
std::vector<std::string> ans;
for (const std::string& word : words) {
// 使用字符串流实现分割
std::istringstream iss(word);
std::string newWord;
while (getline(iss, newWord, separator)) {
// 注意排除掉空串
if (!newWord.empty()) {
ans.push_back(newWord);
}
}
}
return ans;
}
};
时间复杂度:O(NM)
。
空间复杂度:O(1)
。
华为OD算法/大厂面试高频题算法冲刺训练目前开始常态化报名!目前已服务100+同学成功上岸!
课程讲师为全网50w+粉丝编程博主@吴师兄学算法 以及小红书头部编程博主@闭着眼睛学数理化
每期人数维持在20人内,保证能够最大限度地满足到每一个同学的需求,达到和1v1同样的学习效果!
60+天陪伴式学习,40+直播课时,300+动画图解视频,300+LeetCode经典题,200+华为OD真题/大厂真题,还有简历修改、模拟面试、专属HR对接将为你解锁
可上全网独家的欧弟OJ系统练习华子OD、大厂真题
可查看链接 大厂真题汇总 & OD真题汇总(持续更新)
绿色聊天软件戳 od1336
了解更多