分类信息网站发布标题,拍摄宣传片费用明细,编写小程序,wordpress修改pageid文章目录 Tag题目来源解题思路方法一#xff1a;遍历方法二#xff1a;getline 写在最后 Tag
【遍历】【getline】【字符串】【2024-01-20】 题目来源
2788. 按分隔符拆分字符串 解题思路
方法一#xff1a;遍历
思路
分隔符在字符串开始和结束位置时不需要处理。
分隔… 文章目录 Tag题目来源解题思路方法一遍历方法二getline 写在最后 Tag
【遍历】【getline】【字符串】【2024-01-20】 题目来源
2788. 按分隔符拆分字符串 解题思路
方法一遍历
思路
分隔符在字符串开始和结束位置时不需要处理。
分隔符出现在字符串中间时记录上一个分隔符到当前分隔符之间的字符串或者到字符串结尾的字符串非空即可加入到答案数组中。
算法
class Solution {
public:vectorstring splitWordsBySeparator(vectorstring words, char separator) {vectorstring res;for (auto word : words) {word *;string tmp ;int n word.size();for (int i 0; i n; i) {// 分隔符在字符串开始和结尾处不用处理if (word[i] separator (i 0 || i n-1)) continue; // 分隔符只在字符串中间出现的情况if (word[i] separator || word[i] *) {if (!tmp.empty()) {res.push_back(tmp);tmp ;} }else {tmp word[i];}}}return res;}
};复杂度分析
时间复杂度 O ( m × n ) O(m \times n) O(m×n) m m m 为字符串数组 words 的长度 n n n 为字符串 word 的长度。
空间复杂度 O ( n ) O(n) O(n)。
方法二getline
思路
使用 stringstream 中的 getline 操作getline有一个重载后的版本为 getline (istream is, string str, char delim) 可以将输入的字符串 is 根据分隔符 delim 分割然后保存为 str。
算法
class Solution {
public:vectorstring splitWordsBySeparator(vectorstring words, char separator) {vectorstring res;for (const auto word : words) {stringstream ss(word);string sub;while (getline(ss, sub, separator)) {if (!sub.empty()) {res.push_back(sub);}}}return res;}
};复杂度分析
时间复杂度 O ( m × n ) O(m \times n) O(m×n) m m m 为字符串数组 words 的长度 n n n 为字符串 word 的长度。
空间复杂度 O ( n ) O(n) O(n)。 写在最后
如果您发现文章有任何错误或者对文章有任何疑问欢迎私信博主或者在评论区指出 。
如果大家有更优的时间、空间复杂度的方法欢迎评论区交流。
最后感谢您的阅读如果有所收获的话可以给我点一个 哦。