(第11天)【leetcode题解】344、反转字符串 541、反转字符串II #替换数字

目录

  • 344、反转字符串
    • 题目描述
    • 思路
    • 代码
  • 反转字符串II
    • 题目描述
    • 思路
    • 代码
  • 替换数字
    • 题目描述
    • 思路
    • 代码

344、反转字符串

题目描述

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

思路

双指针法:使用两个指针分别指向要交换的元素,进行交换操作。然后不断迭代指针指向,两个指针分别在前半部分从前往后移动、在后半部分从后往前移动。

代码

class Solution {
public:void reverseString(vector<char>& s) {for (int i = 0, j = s.size() - 1; i < s.size()/2;i++, j--) {int tmp = s[i];s[i] = s[j];s[j] = tmp;}}
};

时间复杂度:O(n);使用指针遍历整个字符串。
空间复杂度:O(1);原地反转。

反转字符串II

题目描述

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

  • 如果剩余字符少于 k 个,则将剩余字符全部反转。
  • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

思路

本题为模拟,实现题目中的反转规则即可。

  • 设置一个指针从字符串的开头开始
  • 每次移动2k
  • 然后根据题目进行条件判断
  • 找到对应的情况进行翻转

代码

class Solution {
public:string reverseStr(string s, int k) {for (int i = 0; i < s.size() - 1; i += ( 2 * k )) {//如果剩余字符大于或等于k个if (i+k <= s.size()) {reverse(s.begin() + i,s.begin() + i + k);//反转前k个字符} else { //剩余字符少于k个reverse(s.begin() + i,s.end());//将剩余字符全部反转}}return s;}
};

时间复杂度:O(n);
空间复杂度:O(1);

替换数字

题目描述

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。 例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。

思路

  • C++中的string可以原地修改。
  • 统计s中的数字个数,根据数字个数进行扩容。
  • 使用双指针从扩容后的字符数组末尾开始填充。
  • 一个指针指向原字符数组末尾,一个指针指向扩容后的字符数组末尾。

代码

#include<iostream>
using namespace std;
int main() {string s;while (cin >> s) {int sOldIndex = s.size() - 1;int count = 0;//用来统计字符数组中数字的个数//遍历字符数组,统计其中数字的个数for (int i = 0; i < s.size(); i++) {if (s[i] >= '0' && s[i] <= '9') {count++;}}//将字符串扩充到将数字替换成number之后的大小s.resize(s.size() + count * 5);int sNewIndex = s.size() - 1;//替换//从后往前将数字替换为number并填充到扩充后的字符数组中while (sOldIndex >= 0) {//如果当前字符为数字,替换if (s[sOldIndex] >= '0' && s[sOldIndex] <= '9') {s[sNewIndex--] = 'r';s[sNewIndex--] = 'e';s[sNewIndex--] = 'b';s[sNewIndex--] = 'm';s[sNewIndex--] = 'u';s[sNewIndex--] = 'n';} else {//不是数字s[sNewIndex--] = s[sOldIndex];}sOldIndex--;}cout << s << endl;}
}

时间复杂度:O(n);
空间复杂度:O(1);

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专家解读 | NIST网络安全框架(1):框架概览

随 着信息技术的快速发展&#xff0c;组织面临着越来越严峻的网络安全挑战。NIST网络安全框架&#xff08;NIST Cybersecurity Framework&#xff0c;CSF&#xff09;是一个灵活的综合性指南&#xff0c;旨在协助各类组织建立、改进和管理网络安全策略&#xff0c;以加强网络安…

【Node.js】高级 TypeScript:探索泛型、条件类型和索引访问类型

高级 TypeScript&#xff1a;探索泛型、条件类型和索引访问类型 作者&#xff1a;Alex Martinez 来源&#xff1a;https://lyricalstring.medium.com/advanced-typescript-exploring-generics-conditional-types-and-indexed-access-types-f606768f1250 文章目录 高级 TypeScri…

Java基础(19)Cookie和Session

在Web开发中&#xff0c;Cookie和Session是用来保持客户端和服务器之间状态的两种机制。它们有不同的工作方式及应用场景。 Cookie Cookie是服务器发送到用户浏览器并保存在本地的一小块数据&#xff0c;它会在浏览器下次向同一服务器再次发起请求时被发送回服务器。Cookie常…

计算机网络学习记录Day1

你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客 这是我的 github gitee 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 &#x1f604; (^ ~ ^) 想看更多 那就点个关注吧 我会尽力带来有趣的内容 计算机网络学习记录Day1 本文基于1.1 计算机网络在信息…

python 中的数据结构

python 中的数据结构 1.1 序列 序列时有索引的数组 举例实现&#xff1a; a["北京","上海","广州","深圳","重庆","成都"] print(a[2]) print(a[-1] " " a[-2]) print(a[1:3]) # 运行结果 "&…

C++使用单链表实现一元多项式的加,乘操作

相邀再次喝酒 待 葡萄成熟透 但是命运入面 每个邂逅 一起走到了 某个路口 是敌与是友 各自也没有自由 位置变了 各有队友 首先&#xff0c;按照惯例&#xff0c;十分欢迎大家边听歌边观看本博客&#xff01;&#xff01; 最佳损友 - 陈奕迅 - 单曲 - 网易云音乐 (163.com) 一…

理解这些道理相当于在人生的航程上装备了一双智慧的翅膀

1. 走自己的路&#xff0c;因为只有你才能决定自己的命运。 2. 养育者亦会受反哺&#xff0c;掌灯人终会被照亮。 3. 如果心情不好&#xff0c;建议玩ARPG手机游戏[降龙猎手]放松自己&#xff0c;TapTap上就可以下载&#xff0c;不要 让不好的情绪一直持续下去&#xff0c;尽快…

最新优质电商API接口,附带教程【多语言环境高并发】

给大家更新一波24年一月份的新接口吧。 01 接口信息 线路推荐: 多仓&#xff1a; 1.春盈&#xff1a; https://wds.ecsxs.com/230989.json 2.无意&#xff1a; http://www.wya6.cn/tv/yc.json 3.主流电商平台API数据采集 单仓&#xff1a; 1.饭太硬&#xff1a; http:/…

如何在 Ubuntu 18.04 上为 Nginx 创建自签名 SSL 证书

简介 TLS&#xff0c;即传输层安全性&#xff0c;及其前身 SSL&#xff0c;即安全套接字层&#xff0c;是用于将普通流量包装在受保护的加密包装中的网络协议。 使用这项技术&#xff0c;服务器可以在服务器和客户端之间安全地发送流量&#xff0c;而不会被外部方拦截。证书系…

探无止境,云游未来 | “游戏出海云”发布

4月28日下午&#xff0c;2024中国移动算力网络大会之“游戏出海”分论坛在江苏省苏州金鸡湖国际会议中心圆满落幕。 此次论坛由中国移动海南公司主办&#xff0c;中国移动通信集团政企事业部、中国移动云能力中心、中国移动国际公司共同协办。海南省工业与信息化厅副厅长黄业晶…

爬虫学习(1)简易网页采集器

如何使用: (reques ts模块的编码流程) 指定url 发起请求 获取响应数据 持久化存储 import requests#UA:User-Agent (请求载体的身份标识) #UA伪装&#xff1a;门户网站的服务器会检查对应请求的载体身份标识 if __name__ "__main__":urlhttps://www.baidu.com/s#处理…

ESP8266做主机 手机网络助手为从机

ATCIFSR查看地址&#xff0c;一般ESP8266 为192.168.4.1 在手机上下载网络调试助手&#xff0c;打开TCP客户端 创建后192.168.4.1 端口8089然后连接ESP8266热点。 ESP向手机发数据前先发送要发几个数据ATCIPSEND0,8表示发8个&#xff0c;然后再发8个数 上面创建好热点后&…

GB/T 29061-2012 建筑玻璃用功能膜检测

建筑用玻璃功能膜是指一种由耐磨涂层、经工艺处理的聚酯膜和保护膜通过胶黏剂组合在一起的多层聚酯复合薄膜材料。 GB/T 29061-2012建筑玻璃用功能膜测试项目&#xff1a; 测试项目 测试方法 外观质量 GB/T 29061 尺寸偏差 GB/T 29061 光学性能 GB/T 29061 颜色均匀性…

(Arxiv,2024)Mind the Modality Gap:通过跨模态对齐建立遥感视觉语言模型

文章目录 相关资料摘要引言相关工作对比语言图像预训练遥感域专用 CLIP 模型遥感中的多模态 CLIP 启发模型 方法模型算法输入阶段&#xff1a;输出阶段&#xff1a;步骤说明&#xff1a; 第一阶段&#xff1a;通过权重插值修补CLIP将遥感图像模态与自然图像和文本对齐 实验 相关…

基于PSO优化的PV光伏发电系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于PSO优化的PV光伏发电系统simulink建模与仿真。其中PSO采用matlab编程实现&#xff0c;通过simulink的函数嵌入模块&#xff0c;将matlab调用进simulink中。 2.系统仿真结…

java-Spring-Lombok-讲解-(一文一言)创伤是成熟的途径

高手都在孤独前进-致敬我们不悔的青春 我打算每篇文章下找一下文言警句-说不那天会用上&#x1f601;&#x1f601;&#x1f601;&#x1f601; 每篇一言 创伤是成熟的途径 希望经历过创伤的人,能更好享受当下, 爱自己胜过爱别人呀 目录 &#x1f3bb;Lombok简介 &#…

如何在 Ubuntu 16.04 上为 Nginx 创建自签名 SSL 证书

简介 TLS&#xff0c;即传输层安全协议&#xff0c;及其前身SSL&#xff0c;即安全套接字层&#xff0c;是用于将普通流量包装在受保护的加密包装中的网络协议。 使用这项技术&#xff0c;服务器可以在服务器和客户端之间安全地发送流量&#xff0c;而不会被外部方拦截。证书…

5.协议的编解码

本章内容其实没有多大难度&#xff0c;主要考察大家的细心程度.计算数据长度然后截取相应字节数组并按照协议进行解码&#xff0c;编码则反之。 1.基础消息的编解码 Override public BasicMessage decode(byte[] bytes) {int dataLength ByteUtil.bytesToInt(ByteUtil.extra…

embedding介绍和常用三家模型对比

Embedding(嵌入)是一种在计算机科学中常用的技术,尤其是在自然语言处理(NLP)领域。在NLP中,embedding通常指的是将文本中的单词、短语或句子转换为固定维度的向量(vector)。这些向量代表了文本中的语义和上下文信息。 1.embedding 介绍 1.1 为什么需要Embedding? 在…

MongoDB聚合运算符:$toInt

MongoDB聚合运算符&#xff1a;$toInt 文章目录 MongoDB聚合运算符&#xff1a;$toInt语法使用举例 $toInt聚合运算符将指定的值转换为整数类型。如果指定的值为空或缺失&#xff0c;则返回null&#xff1b;如果值无法被转换为整数&#xff0c;则报错。 语法 {$toInt: <exp…