首页 > 其他分享 >每日一题 2024-1-20 按分隔符拆分字符串

每日一题 2024-1-20 按分隔符拆分字符串

时间:2024-01-20 09:11:43浏览次数:32  
标签:tmp 20 拆分 示例 2024 separator words 分隔符 字符串

1.题目(1239原题链接

给你一个字符串数组 \(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\) 是字符串 "\(.,|\$\#@\)" 中的某个字符(不包括引号)

2.解题思路

按题意模拟即可。

3.c++代码

class Solution {
public:
    vector<string> splitWordsBySeparator(vector<string>& words, char separator) {
        vector<string> ans;
        for(string word:words){
            string tmp;
            for(char ch:word){
                if(ch==separator){
                    if(!tmp.empty()){
                        ans.push_back(tmp);
                        tmp.clear();
                    } 
                }
                else tmp+=ch;
            }
            if(!tmp.empty()) ans.push_back(tmp);
        }
        return ans;
    }
};

4.复杂度分析

  • 时间复杂度:\(O(n×m)\),其中 \(n\) 为字符串数组 \(words\) 的长度,\(m\) 为字符串数组 \(words\) 中最长字符串的长度。

  • 空间复杂度:\(O(m)\)。

标签:tmp,20,拆分,示例,2024,separator,words,分隔符,字符串
From: https://www.cnblogs.com/sunyafeiii/p/17976043

相关文章

  • P8512 [Ynoi Easy Round 2021] TEST_152 题解
    题目链接:[YnoiEasyRound2021]TEST_152题目比较抽象,翻译一下。就是有\(n\)个操作,每个操作为\((l_i,r_i,v_i)\)表示把长为\(m\)序列\(a\)的\([l_i,r_i]\)上的数覆盖为\(v_i\)。而查询为\([time_l,time_r]\),表示从\(time_l\)的操作开始执行,到\(time_r\)操作结......
  • 【2015~2024】大牛直播SDK演化史
    大牛直播SDK的由来大牛直播SDK始于2015年,最初我们只是想做个低延迟的RTMP推拉流解决方案,用于移动单兵等毫秒级延迟的场景下,我们先是实现了Android平台RTMP直播推送模块,当我们用市面上可以找到的RTMP播放器测试时延的时候,居然都要6-7秒延迟,这在直播场景下,几乎是不可接受的,所以我们有......
  • 2024.1.19
    1.Java文件类以抽象的方式代表文件名和路径。该类主要用于文件和目录的创建、文件的查找和删除等。File对象代表磁盘中实际存在的文件和目录。(1)通过给定的父抽象路径名和子路径名字字符串创建一个新的File实例File(Fileparent,Stringchild);(2)通过给定路径名字符串转换成......
  • 2024/1/19 算法笔记
    题目1:最大公约数的延伸问题P1414又是毕业季II-洛谷|计算机科学教育新生态(luogu.com.cn)题目上提及了最大公约数,但是解答却没有直接使用最大公约数doge题目意思是给定n个数,再给定一个k,往这n个数中取k个,求这k个数的最大公约数是多少?然后题目的要求是k的取值为1到n全部取......
  • P4345 [SHOI2015] 超能粒子炮·改 题解
    P4345[SHOI2015]超能粒子炮·改题解求\[\sum_{i=0}^k\binom{n}{i}\pmod{2333}\]思路这种模数小的组合数计数问题可以考虑Lucas定理,试试呗。如果按余数分类不好优化,可以按商分类求和,这样一来套个前缀和可以得到一个递推式,注意最后一块商可能是不整的,单独拿出来即可。......
  • openeuler2203升级openssh9.4p1解决漏洞问题
    openeuler2203升级openssh9.4p1解决漏洞问题 1,使用rpmbuild将tar包打成rpm包,不喜欢编译升级的,使用RPM升级就方便多了。想使用openssh的源码包编译安装的,参考这里:OpenSSH-9.4p1(linuxfromscratch.org) 2,准备编译环境[root@centos7-31~]#  yuminstallrpm-buildzlib......
  • 2024/1/19 每日一记
    2024/1/19每日一记python文件操作打开分两种方式:open()#分别是文件名(包括路径),对文件的操作方式,编码方式f=open("E:/test.txt","r",encoding="UTF-8")withopen()as变量:withopen("E:/test.txt","r",encoding="UTF-8")asfr......
  • GD动角题解(2024.1.19)
    $upd:$2024.1.19改正了一些错误题目讲解只看第三题若在三角板开始转动的同时,射线\(OC\)也绕点\(O\)以每秒25°的速度逆时针旋转一周,从旋转开始多长时间,射线\(OC\)平分\(∠BOD\)?最重要的一点:动角角度\(=\)初始值\(+\)角度\((vt)\)明确了这一点之后我们看题这题可以分......
  • 2024年常用的数据恢复软件推荐
    引言:在现代社会中,我们越来越依赖于电子设备来保存和管理我们的个人和工作数据。然而,数据丢失的风险也随之增加。无论是由于误删除、硬件故障还是其他原因,数据丢失对我们造成的损失都是不可忽视的。因此,具备一款可靠的、专业的数据恢复软件是非常有必要的。本文将向大家推荐几款值得......
  • 南外集训 2024.1.19 T3
    给定正整数\(m,n\)使得\(m|n\),求\([1,n]\cap\mathbbZ\)的所有子集中有多少和是\(m\)的倍数。\(1\leT\le10^4,1\lem\le10^7,1\len\le10^{18}\)相当于求\(F(z)=(1+z^0)(1+z^1)\dots(1+z^{n-1})\)的\(0,m,2m,\dots\)项之和。单位根反演可得\(Ans=......