【小菜鸡刷题记】--字符串篇
【小菜鸡刷题记】:字符串
- 剑指 Offer 05. 替换空格
- 剑指 Offer 58 - II.左旋转字符串
- 剑指 Offer 20.表示数值的字符串
- 剑指 Offer 67. 把字符串转换成整数
特此声明:题目均来自于力扣
剑指 Offer 05. 替换空格
题目链接
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
class Solution {
public:string replaceSpace(string s) {string str;for(int i=0;i<s.size();++i){if(s[i]==' '){str+="%20";}else{str+=s[i];}}return str;}
};
剑指 Offer 58 - II.左旋转字符串
剑指 Offer 58 - II. 左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
示例 1:
输入: s = “abcdefg”, k = 2
输出: “cdefgab”
//三步翻转法
class Solution {
public:string reverseLeftWords(string s, int n) {int k=n%s.size();//反转前半段reverse(s.begin(),s.begin()+k);//反转后半段reverse(s.begin()+k,s.end());//整体反转reverse(s.begin(),s.end());return s;}
};//字符串拼接法
class Solution {
public:string reverseLeftWords(string s, int n) {return s.substr(n)+s.substr(0,n);}
};
剑指 Offer 20.表示数值的字符串
剑指 Offer 20. 表示数值的字符串

解题思路:数值可以表示为A [ . [ B ] ] [ E | e C ]或者.B [ e | E C ]
其中A是这个数值的整数部分,B是小数点后及e之前的小数部分,C是e的指数部分;
整数部分不是必须的
以数值字符串123.45e+6为例:123为整数部分A,45为小数部分B,+6为指数部分C
class Solution {
public://匹配正负号bool isInteger(string& s){if(s[0]=='+'||s[0]=='-')s.erase(0,1);return Isdigit(s); }//判断是否出现数字bool Isdigit(string& s){int i=0;while(s[i]!='\0'&&isdigit(s[i])){i++;}s=s.substr(i);return i>0;}void EraseSpace(string& s){//去除首尾空格int i = 0;while (i < s.size() && s[i] == ' ')i++;s = s.substr(i);while (s.back() == ' ')s.pop_back();}bool isNumber(string s) {if(s=="") return false;EraseSpace(s);//判断是否出现‘+’‘-’数字,并原地修改字符串bool Integer=isInteger(s);//如果出现.,证明到了小数部分if(s[0]=='.'){s.erase(0,1);// ||的原因// 1:9. 等于9.0// 2:9.9 正常数值// 3:.9 等于0.9Integer=Isdigit(s)||Integer;}//如果出现‘e’"E",指数部分if(s[0]=='e'||s[0]=='E'){s.erase(0,1);//用&&的原因// 1.e前面没有整数:.e6、e6不能表示数字// 2.e的后面没有整数: 6e、6e3不能表示数字Integer=Integer&&isInteger(s);}//特殊情况:如果e后面有小数点,会在s=="\0"这一步判断失败return Integer && s=="\0";}
};
剑指 Offer 67. 把字符串转换成整数
剑指 Offer 67. 把字符串转换成整数
写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。

考虑特殊输入,如字符串是一个""、"\0" "0" "+0" "-0"
我定义了一个枚举类型以及一个全局变量用来分辨是否是合法输入
enum{IsUnlawful=0,IsLawful};//判断是否是非法输入
static int g_state=Islawful;
class Solution {
public:int strToInt(string str) {int g_state=IsUnlawful;//非法输入long long num=0;int i=0;if(str !="" && str!="\0"){bool flag=true;//正数while(str[i]==' ')//去空格{++i;}if(str[i]=='+')//判断符号{i++;}else if(str[i]=='-'){i++;flag=false;}if(str[i]!='\0')//+-'\0';{num=DigitToStr(str,i,flag);//转换}}//cout<<g_state<<endl;这里进用来测试是非法输入还是合法输入return static_cast<int>(num);}long long DigitToStr(string& s,int& i,bool flag){long long num=0;while(s[i]!='\0'){if(isdigit(s[i])){int ret=flag==true? 1:-1; num=10*num+(s[i]-'0')*ret;//判断是否越界if(num>INT_MAX&&flag){return INT_MAX;}if(num<INT_MIN&&!flag){return INT_MIN;}}if(!isdigit(s[i]))//异常结束;我这里把 "4193 with words"、"words and 987"看成一种情况{break;}++i;if(s[i]=='\0')//正常结束{//设置为合法输入g_state=IsLawful;}}return num;}
};
相关文章:
【小菜鸡刷题记】--字符串篇
【小菜鸡刷题记】:字符串 剑指 Offer 05. 替换空格剑指 Offer 58 - II.左旋转字符串剑指 Offer 20.表示数值的字符串剑指 Offer 67. 把字符串转换成整数 特此声明:题目均来自于力扣 剑指 Offer 05. 替换空格 题目链接 请实现一个函数,把字符…...
Sonar加入jenkins流水线
前提:已搭建sonarqube 1、配置sonarqube server jenkins 中manage jenkins-configure System配置sonarqube server 2、准备sonar环境 在jenkins项目的构建环境步骤中,勾选prepare SonarQube environment token需要提前在凭据里添加一个token 3、执行s…...
FSW26现金回收RS FSW43 信号和频谱分析仪
Rohde & Schwarz FSW26信号和频谱分析仪,2 Hz - 26.5 GHz 高性能 Rohde & Schwarz (R&S) FSW26 信号和频谱分析仪专为方便、准确和快速而设计。其独特的触摸屏、直观的多视图结果显示和优化的用户指南使 R&S FSW26 分析仪的操作高效方便。凭借其无…...
GraphPad Prism 9.5.1 for Mac 操作简便功能强大且实用的医学绘图分析工具
GraphPad Prism简介 GraphPad Prism是一款非常实用的统计软件,其功能非常强大,能够帮助用户进行各类科研数据的处理和分析,快速绘制出各种专业的图像和数据报告。 GraphPad Prism软件的用户界面非常友好,易于学习和操作…...
六. Activity启动模式
Task任务栈(ActivityTask) Activity属于App进程,但是Task属于操作系统,Task里面的Activity可以是属于不同的App的,所以App之间是可以相互调用的.比如:App里面可以使用打电话、地图等. 当我们查看手机后台运行的程序,他们其实就是一个个任务栈Task,我们平时可能会把他认为是一个…...
本机连接aws的ec2时报错:所选用户的用户密钥未在远程主机上注册
引言 由于工作的需要,所以需要去学习下AWS相关的知识,所以自己注册了一个AWS的账号去进行学习。 问题发现 按照启动ec2实例的步骤:选择镜像->选择系统配置->配置密钥对->配置安全组->设置存储卷大小->启动实例 在上述操作…...
谁看见我的猫照片了
今天分享一个可自由拖得动的图片效果样式。 先看效果: 谁看见我猫的照片了? 再上源码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><st…...
数据结构与算法之深度优先算法详解
深度优先算法(Depth First Search,DFS)是一种常见的图形算法,它是一种用于遍历或搜索树或图的算法。在深度优先搜索中,我们首先探索一个子树的深度,然后再回溯到父节点,接着探索另一个子树的深度…...
C# 给winfrom窗体添加皮肤控件
如何快速给C# winform添加好看的皮肤C# Winform中窗体的美化 SkinEngine的应用 皮肤控件换肤素材包,IrisSkin2.dll皮肤素材资源下载 压缩包内一共有22种皮肤素材,使用说明:把控件拖到你的form上,只需一行代码,即可实…...
数据分析真的很火吗?真的有很多企业需要这样的岗位吗?求大佬指点。
“我是去年毕业的,因为疫情影响,整个就业环境都很不好,很多企业都裁员了。加上疫情三年基本都是玩过去,也没啥一技之长,就业就更难了。听说现在做数据分析的人很多,我身边的朋友都在转行做数据分析。 其实…...
100 个 Go 错误以及如何避免:9~12
协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【OpenDocCN 饱和式翻译计划】,采用译后编辑(MTPE)流程来尽可能提升效率。 真相一旦入眼,你就再也无法视而不见。——《黑客帝国》 九、并发实践 本章涵盖 防止 …...
用户/用户组管理
用户管理 * useradd 命令添加用户,会在/etc/passwd生成用户信息,信息分为7列,被6个冒号隔开 第一列 username (login name) 第二列 密码,但是该列已经被移除,用x表示,密码信息已经存放在了/etc/shadow文…...
如何进行TCP抓包调试?
网络调试工具——Wireshark Wireshark 是世界上应用最广泛的网络协议分析器,它让我们在微观层面上看到整个网络正在发生的事情。 Wireshark 本身是一个开源项目,所以也得到了很多志愿者的支持。同时,Wireshark 具有丰富的功能集,…...
分享一个国内可用的ChatGPT网站,免费无限制,支持AI绘画 - AI 百晓生
背景 ChatGPT作为一种基于人工智能技术的自然语言处理工具,近期的热度直接沸腾🌋。 作为一个AI爱好者,翻遍了各大基于ChatGPT的网站,终于找到一个免费!免登陆!手机电脑通用!国内可直接对话的C…...
API安全性的要素与开发人员必修课测试
一、API安全性的要素主要包括以下几点: 1.身份验证和访问控制:API应该通过身份验证来验证请求的源,确保只有授权的用户或应用程序才能访问API。这可以通过使用API密钥、访问令牌、OAuth令牌或其他身份验证机制实现。 2.数据加密:A…...
leetcode 651. 4键键盘
651. 4键键盘 中等 102 company 微软 Microsoft company 谷歌 Google company 亚马逊 假设你有一个特殊的键盘包含下面的按键: A:在屏幕上打印一个 ‘A’。Ctrl-A:选中整个屏幕。Ctrl-C:复制选中区域到缓冲区。Ctrl-V:…...
Python垃圾回收机制
Python 运行过程中会不停的创建各种变量,而这些变量是需要存储在内存中的,随着程序的不断运行,变量数量越来越多,所占用的空间势必越来越大,如果对变量所占用的内存空间管理不当的话,那么肯定会出现 out of…...
Grafana插件安装并接入zabbix数据源(03)
一、在线安装插件 如果不指定插件安装位置,则默认安装位置为/var/lib/grafana/plugins;插件安装后需要重启grafana-server 安装zabbix插件alexanderzobnin-zabbix-app # grafana-cli plugins install alexanderzobnin-zabbix-app 使用--pluginsDir指定安装路径 # grafana…...
简述 JavaScript 中 prototype
简述 JavaScript 中 prototype 这篇笔记主要捋一下这么几个概念: JS 的继承构造函数new 的作用及简易实现__proto__ & prototype同样的方法,class 和 prototype 中分别是怎么实现的 基础概念 JS 是通过 prototype chaining 实现继承的语言&#…...
一觉醒来Chat gpt就被淘汰了
目录 什么是Auto GPT? 与其他语言生成模型相比,Auto GPT具有以下优点 Auto GPT的能力 Auto GPT的能力非常强大,它可以应用于各种文本生成场景,包括但不限于以下几个方面 Auto GPT的历史 马斯克说:“ChatGPT 好得吓…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
