代码随想录刷题随记7-字符串1

代码随想录刷题随记7-字符串1

文章目录

  • 代码随想录刷题随记7-字符串1
    • 344.反转字符串
    • 541. 反转字符串II
    • 替换数字
    • 151.翻转字符串里的单词
    • 右旋字符串

344.反转字符串

leetcode链接
主要的难点在于使用 O(1) 的额外空间解决这一问题
反转字符串依然是使用双指针的方法
swap可以有两种实现。

一种就是常见的交换数值:
一种就是通过位运算,这个之前没见过,这里记录一下

s[i] ^= s[j];
s[j] ^= s[i];
s[i] ^= s[j];

解题代码

class Solution {
public:void swap(vector<char>& s,int i,int j){if(i==j){return;}s[i]^=s[j];s[j]^=s[i];s[i]^=s[j];}void reverseString(vector<char>& s) {int i=0;int j=s.size()-1;while(j>i){swap(s,i,j);i++;j--;}}
};

541. 反转字符串II

leetcode链接
整体反转的思路和上一道题目一样
在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的区间。
解题代码:

class Solution {
public:void swap(string &s,int i,int j){if(i==j){return;}char tmp=s[i];s[i]=s[j];s[j]=tmp;}void reverse(string & s,int i,int j){while(i<j){swap(s,i,j);i++;j--;}}string reverseStr(string s, int k) {for(int i=0;i<s.size();i+=(2*k)){//剩余的字符大于等于k小于等于2kif(i+k<=s.size()){reverse(s,i,i+k-1);continue;}//剩余小于kreverse(s,i,s.size()-1);}return s;}
};

替换数字

题目链接
可以用双指针法实现空间复杂度为O(1)的,但这种方法java里面不适用。
在这里插入图片描述
为啥要从后往前遍历:因为前面一截是没转化为number的字符串,如果从前往后遍历就会被覆盖。
解题源码:

#include<string>
#include<iostream>
using namespace std;
int main(){string s;char chars[6]={'r','e','b','m','u','n'};while(cin>>s){int count=0;for(int i=0;i<s.size();i++){if(s[i]>='0'&&s[i]<='9'){count++;}}int i=s.size()-1;s.resize(s.size()+count*5);int j=s.size()-1;while(i>=0){if(s[i]>='0'&&s[i]<='9'){// for(int k=0;k<6;k++){//     s[j]=chars[k];//     j--;// }s[j-5] = 'n';s[j-4] = 'u';s[j-3] = 'm';s[j-2] = 'b';s[j-1] = 'e';s[j]   = 'r';j -= 5;}else{s[j]=s[i];}i--;j--;}cout << s << endl;}
}

151.翻转字符串里的单词

leetcode链接
用栈实现
解题代码:

class Solution {
public:string reverseWords(string s) {vector<string> stack;int top=-1;int  pre=0;int flag=0;for(int i=0;i<s.size();i++){if(s[i]==' '){if(flag!=0){stack.push_back(s.substr(pre,i-pre));      top++;}while(s[i]==' ') i++;pre=i;}if(s[i]!=' ')flag=1;}if(s[s.size()-1]!=' '){stack.push_back(s.substr(pre,s.size()-pre));top++;}string ret="";for(;top>=0;top--){ret+=stack[top];if(top!=0)ret+=" ";}return ret;}
};

右旋字符串

题目链接
先把子串反转一遍,再整个反转一遍。负负得正就起到了整体的效果。
解题代码

#include<iostream>
using namespace std;
void reverse(string & s,int i,int j){if(i== j)return;while(i<j){char tmp=s[i];s[i]=s[j];s[j]=tmp;i++;j--;}
}
int main(){int k;string s;cin>>k;cin>>s;reverse(s,0,s.size()-k-1);reverse(s,s.size()-k,s.size()-1);reverse(s,0,s.size()-1);cout<<s<<endl;;}

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

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

相关文章

PHP图床程序优化版:图片外链服务、图床API服务、图片CDN加速与破解防盗链

图片免费上传 支持本地储存、FTP储存、第三方云储存&#xff08;阿里云 OSS、腾讯云 COS、七牛云等&#xff09;。 图片外链加速 一键转换第三方网站的图片外链地址为图床可分享的图片地址&#xff08;支持CDN&#xff09;。 图片解析服务 直接将第三方外链图片地址显示为…

有趣的css - 多弧形加载动画

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是用纯css实现多双弧线加载动画。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样式页面渲…

网站可扩展架构设计

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、可扩展性架构简介 1.可扩展性是什么 可扩展性指系统为了应对将来需求变化而提供的一种扩展能力&#xff0c;当有新的需求出现时&#xff0c;系…

【ripro美化】全站美化包WordPress RiPro主题二开美化版sucaihu-childV1.9(功能集成到后台)

使用介绍 1、【宝塔】删除ripro文件&#xff0c;上传最新ripro版本&#xff0c;然后上传压缩包内的ripro里面的对应文件到ripro主题对应内覆盖&#xff08;找到对应路径单个文件去覆盖&#xff09;。 2、然后上传ripro-chlid子主题美化包到/wp-content/themes路径下 3、注意顺…

node的安装

官网下载&#xff08;建议使用预编译包安装&#xff09; 地址&#xff08;https://nodejs.org/en/download/prebuilt-binaries&#xff09; 解压包&#xff0c;并将 bin下面的 node npm npx加入到环境变量中或者建立软连接 ln -s 安装位置/bin/node PATH下面的路径 npm配置…

CPU、GPU等硬件检测工具(组装机硬件负责)

1.CPU&#xff08;CPU-Z&#xff09; 下载地址&#xff1a;CPU-Z | Softwares | CPUID 安装or解压 相关的软件信息&#xff1a; 2.GPU&#xff08;GPU-Z&#xff09; 下载地址&#xff1a;TechPowerUp GPU-Z v2.57.0 Download | TechPowerUp 安装 相关的软件信息&#xf…

C++第十三弹---内存管理(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、operator new与operator delete函数 1.1、operator new与operator delete函数 2、new和delete的实现原理 2.1、内置类型 2.2、自定义类型 …

【PostgreSQL PGCE-091题目解析31】pg中的默认隔离级别为?

本文为云贝教育刘峰&#xff08;微信&#xff1a;yunbee_DBA&#xff09;原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎和未经注明出处的转载。 pg中的默认隔离级别为&#xff1f; A、读未提交 B、读已提交 C、重复读 D、串…

深入探讨iOS开发:从创建第一个iOS程序到纯代码实现全面解析

iOS开发作为移动应用开发的重要领域之一&#xff0c;对于开发人员具有重要意义。本文将深入探讨iOS开发的各个方面&#xff0c;从创建第一个iOS程序到纯代码实现iOS开发&#xff0c;带领读者全面了解iOS应用程序的开发流程和技术要点。 &#x1f4f1; 第一个iOS程序 在创建第…

JetBrains全家桶激活,分享 WebStorm 2024 激活的方案

大家好&#xff0c;欢迎来到金榜探云手&#xff01; WebStorm公司简介 JetBrains 是一家专注于开发工具的软件公司&#xff0c;总部位于捷克。他们以提供强大的集成开发环境&#xff08;IDE&#xff09;而闻名&#xff0c;如 IntelliJ IDEA、PyCharm、和 WebStorm等。这些工具…

让手机平板成为AI开发利器:AidLux

想ssh登录自己的手机吗&#xff1f; 想在手机上自由的安装lynx、python、vscode、jupyter甚至飞桨PaddlePaddle、Tensorflow、Pytorch和昇思Mindspore吗&#xff1f; 那么看这里....装上AidLux&#xff0c;以上全都有&#xff01; AidLux是一个综合的AI开发平台&#xff0c;…

Capture One Pro 22 for Mac/win:重塑RAW图像处理的艺术

在数字摄影的世界里&#xff0c;RAW图像处理软件无疑是摄影师们手中的魔法棒&#xff0c;而Capture One Pro 22无疑是这一领域的璀璨明星。这款专为Mac和Windows系统打造的图像处理软件&#xff0c;以其出色的性能、丰富的功能和极致的用户体验&#xff0c;赢得了全球摄影师的广…