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

文章目录

  • 题目
  • 思路
  • 代码

题目

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

思路

这道题就是一个简单的模拟题,题目要求遇到separator就进行分割,然后把结果放到一个vector容器中返回即可。我们抗议使用一个string类型的s用来记录我们每一个分离出来的单词,然后每一次遇到separator就特殊处理一下看看s有没有收集到单词,如果收集到的话就记录下来,否则就继续。这一次用到了一个释放相应内存的一种常见技巧:

string().swap(s);

"s"是你要清空的字符串对象。这一行代码的作用是创建一个临时的匿名字符串对象,然后与目标字符串 s 进行交换。由于匿名字符串对象是空的,而且交换操作不涉及内存分配,因此这个过程就相当于清空了字符串 s。
这种技巧的好处在于能够迅速释放字符串占用的内存,特别是在需要多次清空字符串的情况下,可以有效避免频繁的内存分配和释放,提高程序的性能。
string().swap(s) 这种技巧的时间复杂度是 O(1),适合多次清空使用。

代码

class Solution {
public:
    vector<string> splitWordsBySeparator(vector<string>& words, char separator) {
        string s;
        vector<string> ans;
        for(int i=0;i<words.size();++i)
        {
            for(int j=0;j<words[i].size();++j)
            {
                if(words[i][j]!=separator)
                {
                    s=s+words[i][j];
                }
                else if(s.size()!=0)
                {
                    ans.push_back(s);
                    string().swap(s);
                }
            }
            if(s.size()!=0)
            {
                    ans.push_back(s);
                    string().swap(s);
            }
        }
        return ans;
    }
};

最后的执行效果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/335174.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu中查看IP地址的常用命令及使用方法

在Ubuntu操作系统中&#xff0c;了解和查看IP地址是进行网络配置、故障排除以及连接其他设备的重要一步。 以下是几个常用的命令来查看IP地址&#xff1a; 一、ifconfig命令 输入ifconfig 输出如图所示&#xff0c;即为ip地址 如若提示没有ifconfig命令&#xff0c;则可以使用…

LeetCode 热题 100 | 双指针(下)

目录 42. 接雨水 1 方法一&#xff1a;我的方法 2 方法二&#xff1a;动态规划 3 方法三&#xff1a;双指针 菜鸟做题第一周&#xff0c;语言是 C 42. 接雨水 1 方法一&#xff1a;我的方法 Warning&#xff1a;这是我的智障做法&#xff0c;请勿模仿 我只能说它教会…

macOS系统ISO镜像完整制作过程

1.下载dmg包 下载中... 下载完成后会自动弹出安装窗口如下: 启动台中也有 Install macOS Sonoma图标 2.创建一个空的15G的dmg镜像: 创建空dmg镜像命令如下: hdiutil create -o ./Sonoma.cdr -size 15000m -layout SPUD -fs

python毕设选题 - 大数据工作岗位数据分析与可视化 - python flask

文章目录 0 前言1 课题背景2 实现效果3 项目实现3.1 概括 3.2 Flask实现3.3 HTML页面交互及Jinja2 4 **完整代码**5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要…

【Java】JDBC的使用

JDBC package jdbc_demo;import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;public class jdbc {public static void main(String[] args)throws Exception {//1.注册驱动Class.forName("com.mysql.cj.jdbc.Driver");//2.获取…

信道复用技术码分复用 CDM(Code Division Multiplexing)

目录 一、码分复用 CDM&#xff08;Code Division Multiplexing&#xff09; 二、码分多址CDMA 三、码片序列的概念 四、码片序列的正交关系 五、CDMA的工作原理 一、码分复用 CDM&#xff08;Code Division Multiplexing&#xff09; 常用的名词是码分多址 CDMA (Code Di…

OceanBase集群部署

我认为学习一个中间件比较好的方式是&#xff0c;先了解它的架构和运行原理&#xff0c;然后动手部署一遍&#xff0c;加深对它的了解&#xff0c;再使用它&#xff0c;最后进行总结和分享 本篇介绍OceanBase部署前提条件和集群部署 1.使用开源免费的社区版&#xff0c;企业版…

JS-WebAPIS(四)

日期对象&#xff08;常用&#xff09; • 实例化 在代码中发现了 new 关键字时&#xff0c;一般将这个操作称为实例化创建一个时间对象并获取时间 获得当前时间 获得指定时间 • 时间对象方法 使用场景&#xff1a;因为日期对象返回的数据我们不能直接使用&#xff0c;所以…

Yearning存在任意文件读取漏洞

文章目录 前言声明一、Yearning简介二、漏洞描述三、影响版本四、漏洞复现五、修复建议 前言 Yearning MYSQL SQL语句审核平台。提供查询审计&#xff0c;SQL审核&#xff0c;SQL回滚&#xff0c;自定义工作流等多种功能。该平台存在任意文件读取漏洞。 声明 请勿利用文章内的…

ThinkPad T14/T15/P14s/P15s gen2电脑原厂Win10系统镜像 恢复笔记本出厂时预装自带OEM系统

lenovo联想原装出厂Windows10系统&#xff0c;适用型号&#xff1a; ThinkPad T14 Gen 2&#xff0c;ThinPad T15 Gen 2&#xff0c;ThinkPad P14s Gen 2&#xff0c;ThinkPad P15s Gen 2 &#xff08;20W1,20W5,20VY,20W7,20W0,20W4,20VX,20W6&#xff09; 链接&#xff1…

【车载开发系列】Autosar DCM诊断管理模块

【车载开发系列】Autosar DCM诊断管理模块 【车载开发系列】Autosar DCM诊断管理模块 【车载开发系列】Autosar DCM诊断管理模块一. DCM模块概念二. DCM模块与Autosar其他模块关系1&#xff09;Dcm和PduR的交互2&#xff09;Dcm和ComM模块的交互3&#xff09;Dcm和Dem的交互4&a…

职能部门的绩效考核改革,解决方案来了

一、客户背景及现状问题 A酒店是酒店行业的龙头企业&#xff0c;其品牌享有很高的知名度。为了适应市场竞争及发展的需要、充分发挥每个员工的积极性&#xff0c;提高企业的整体业绩&#xff0c;该企业于前几年开始实行严格的绩效考核制度。绩效考核实行之初&#xff0c;管理者…

基于Django的Python应用—学习笔记—功能完善

一、让用户可以输入信息 创建forms.py 创建基于表单的页面的方法几乎与前面创建网页一样&#xff1a;定义一个 URL &#xff0c;编写一个视图函数并编写一个模板。一个主要差别是&#xff0c;需要导入包含表单 的模块forms.py 。 from django import forms from .models impor…

安捷伦E8361A网络分析仪E8361C

安捷伦E8361A网络分析仪 E8361A 是 Agilent 的 67 GHz 网络分析仪。网络分析仪是一种功能强大的仪器&#xff0c;可以以无与伦比的精度测量射频设备的线性特性。许多行业使用网络分析仪来测试设备、测量材料和监控信号的完整性。附加功能&#xff1a; 94 dB 的动态范围和 <…

Odrive 学习系列四:如何使用脚本自动初始化odrive配置

一、背景: 在学习markbase的教程后,发现odrive的初始化配置命令确实有点多。尽管odrive有自动补全: 且可以通过 ctrl + → 来快速补全: 但是对初学者而言,仍旧有比较大的工作量。 而针对于此,我们可以通过powershell脚本的方式来解决这个问题。 二、设计初始化…

Flink实时数仓同步:拉链表实战详解

一、背景 在大数据领域&#xff0c;业务数据通常最初存储在关系型数据库&#xff0c;例如MySQL。然而&#xff0c;为了满足日常分析和报表等需求&#xff0c;大数据平台会采用多种不同的存储方式来容纳这些业务数据。这些存储方式包括离线仓库、实时仓库等&#xff0c;根据不同…

github如果有别人给你的仓库提pull request,该如何验证他的代码并合并

我有一个github仓库&#xff0c;是做抖音直播数据对接的&#xff0c;有很多朋友给我点了star&#xff0c;也有朋友fork了这个仓库&#xff0c;最近接收到一个pull request的请求&#xff0c;他最直播结束的内容作了判断&#xff0c;我该如何在我本地校验它的代码并合并呢&#…

【Linux】03 GCC编译器的使用

一、编译过程 在使用gcc编译程序时&#xff0c;编译过程可以简要划分为4个阶段&#xff1a; 预处理、编译、汇编、链接 1.1 预处理&#xff08;preprocessing&#xff09; 这个阶段主要处理源文件中的#indef、#include和#define预处理命令&#xff1b; 这里主要是把一些include…

Linux 部署

jdk&tomcat安装 1.上传jdk、tomcat安装包 2.解压两个工具包 #解压tomcat tar -zxvf apache-tomcat-8.5.20.tar.gz #解压jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 3.配置并且测试jdk安装 #配置环境变量 vim /etc/profile #java environment export JAVA_HOME/root/soft/…

【手撕C语言 第五集】分支和循环(下)

for循环 我们已经知道了while循环&#xff0c;但是我们为什么还要一个for循环呢&#xff1f; 首先来看看for循环的语法&#xff1a; 表达式1 表达式1为初始化部分&#xff0c;用于初始化循环变量的。 表达式2 表达式2为条件判断部分&#xff0c;用于判断循环时候终止。 表达式…