【C++初阶】String在OJ中的使用(一):仅仅反转字母、字符串中的第一个唯一字母、字符串最后一个单词的长度、验证回文串、字符串相加
前言:
🎯个人博客:Dream_Chaser
🎈博客专栏:C++
📚本篇内容:仅仅反转字母、字符串中的第一个唯一字母、字符串最后一个单词的长度、验证回文串、字符串相加
目录
917.仅仅反转字母
题目描述:
387.字符串中的第一个唯一字符
题目描述:
HJ1 字符串最后一个单词的长度
输入描述:
输出描述:
125.验证回文串
题目描述:
415.字符串相加
题目描述:
917.仅仅反转字母
题目链接:917. 仅仅反转字母 - 力扣(LeetCode)
题目描述:
给你一个字符串 s
,根据下述规则反转字符串:
- 所有非英文字母保留在原有位置。
- 所有英文字母(小写或大写)位置反转。
返回反转后的 s
。
题目示例:
题目思路:
使用begin和end两个指针,开始时begin指向字符串开头,end指针指向字符串末尾(’\0’的前一个字符)。当两指针同时指向字母时,应该立即进行交换,接着begin++,end--。若其中一个遇到非字母或者两个指针同时遇到非字母,则跳过该字符,进行对应的++,-- 操作,重复上述步骤。当begin>end循环结束,返回 s .
起始图:
动态过程:
结果图:
代码:
class Solution {
public:bool isLetter(char ch){if(ch>= 'A' && ch<='Z')return true;if(ch>='a' && ch<='z')return true;return false;}string reverseOnlyLetters(string s) {int begin = 0,end=s.size()-1;while(begin<end){//先写出判断条件,避免越界问题,再判断是否为字母//遇到非字母跳过while(begin<end && !isLetter(s[begin])){++begin;}while(begin<end && !isLetter(s[end])){--end;}//进行字母间的交换swap(s[begin],s[end]);++begin;--end;}return s;}
};
387.字符串中的第一个唯一字符
题目链接:387. 字符串中的第一个唯一字符 - 力扣(LeetCode)
题目描述:
给定一个字符串 s
,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1
。
示例:
思路:
使用一个大小为26个int的数组countA(因为只有26个字母)统计字符串 s 中每个字母出现的次数,然后再遍历一次字符串,找到第一个唯一字符(字符串中只有这一个只出现一次,并且它是第一个,即使后面有唯一字符,也是返回第一个出现的字符),返回它在该字符串 s 中的索引,若找不到则返回-1。
class Solution {
public:int firstUniqChar(string s) {//计算这个字符串某个字符出现次数的数组int countA[26] = {0};//范围for统计出字符串中每个元素出现的次数for(auto ch : s){countA[ch - 'a']++;//映射其在字母表中的位置}for(int i =0;i<s.size();i++){if(countA[s[i] - 'a'] == 1)//找到s中第一次出现的字母{return i;//返回其索引}}return -1;//找不到}
};
HJ1 字符串最后一个单词的长度
题目链接:字符串最后一个单词的长度_牛客题霸_牛客网 (nowcoder.com)
题目描述:
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述:
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述:
输出一个整数,表示输入字符串最后一个单词的长度。
示例:
图解:
#include <iostream>
using namespace std;
#include<string>
int main()
{string str;getline(cin,str);//不要使用cin>>line,因为会它遇到空格就结束了size_t i =str.rfind(' ');//找到此字符串的最后一个空格的位置if(i != string::npos)//等于则表示“未找到”或者“超出范围”{cout<<str.size() - (i+1)<<endl;}else//字符串没有空格,则计算整个字符串的大小{cout<<str.size()<<endl;}
}
125.验证回文串
题目链接:125. 验证回文串 - 力扣(LeetCode)
题目描述:
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
给你一个字符串 s
,如果它是 回文串 ,返回 true
;否则,返回 false
。
题目示例:
解题思路:
先写一个判断是否为字母和数字的函数,然后写一个判断回文数的函数,先用范围for遍历这个字符串,将所有小写字母变成大写字母(为什么不用大写转小写呢?)看下面解释:
将所有小写字母转换成大写后,此时定义begin指向字符串的开头,end则指向字符串结尾('\0'的前一个位置),循环条件是begin < end,此时遍历字符串,begin向右移动,end向左移动,如果遇到 空格,以及其他非数字非字母的字符则直接跳过。
之后,如果两指针此时指向的字符不一样(因为前面已经小写转大写)则直接返回false,如果相同依旧是begin++,end--,当遍历完字符串时,则说明此字符串为回文字符串,返回true。
代码:
class Solution {
public://判断是否是字母,数字,是返回true,否则为falsebool isLetterOrNumber(char ch){return (ch>='0' && ch<='9')|| (ch>='a' && ch<='z')|| (ch>='A' && ch<='Z');}//确保在后续比较时,无论是大写还是小写字母,都被视为相同的字符//这样做的好处在于,当判断字符串是否为回文串时,我们不需要区分大小写//在忽略空格并统一字母大小写后,其回文性更容易判断bool isPalindrome(string s)//判断是否是回文数{for(auto&ch :s){if(ch>='a' && ch<= 'z'){ch -= 32;}}int begin = 0, end = s.size()-1;while(begin<end){//遇到非字母和数字则跳过while(begin < end && !isLetterOrNumber(s[begin])){++begin;}while(begin < end && !isLetterOrNumber(s[end])){--end;}if(s[begin] != s[end]){return false;}else{++begin;--end;} }return true;} };
415.字符串相加
题目链接:415. 字符串相加 - 力扣(LeetCode)
题目描述:
给定两个字符串形式的非负整数 num1
和num2
,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger
), 也不能直接将输入的字符串转换为整数形式。
题目示例:
代码:
class Solution {
public:string addStrings(string num1, string num2) {int end1=num1.size()-1,end2=num2.size()-1;string str;//进位int next= 0;while(end1>= 0 || end2>=0){int x1 = end1 >=0 ? num1[end1]-'0' : 0;int x2 = end2 >=0 ? num2[end2] -'0': 0;int ret = x1 + x2 +next;//进位next = ret/10;ret= ret%10;//头插str.insert(0,1,'0'+ret);--end1;--end2;}if(next ==1)str.insert(0,1,'1');return str;}
};
本篇完。
🔧本文修改次数:0
🧭更新时间:2024年4月7日
相关文章:
【C++初阶】String在OJ中的使用(一):仅仅反转字母、字符串中的第一个唯一字母、字符串最后一个单词的长度、验证回文串、字符串相加
前言: 🎯个人博客:Dream_Chaser 🎈博客专栏:C 📚本篇内容:仅仅反转字母、字符串中的第一个唯一字母、字符串最后一个单词的长度、验证回文串、字符串相加 目录 917.仅仅反转字母 题目描述&am…...
【25考研】:四川大学计算机学院24届874考研考情分析
去年的考情分析也是我做的, 今年就在去年的基础上做了。保持形式不变,更改数据。 21考情: 万载月寒肠断客:四川大学计算机学院21届CS考研考情分析 22考情: 懒羊羊:四川大学计算机学院2022考研考情分析 2…...
【GPT-4 Turbo】、功能融合:OpenAI 首个开发者大会回顾
GPT-4 Turbo、功能融合:OpenAI 首个开发者大会回顾 就在昨天 2023 年 11 月 6 日,OpenAI 举行了首个开发者大会 DevDay,即使作为目前大语言模型行业的领军者,OpenAI 卷起来可一点都不比同行差。 OpenAI 在大会上不仅公布了新的 …...
java-Stream原理及相关操作详解(filter、map、flatMap、peek、reduce、anyMatch等等)
java-Stream原理及相关操作详解 Stream流前言Stream流原理介绍Stream-Api常用方法介绍filter()map()flatMappeekreducemax、minfindAny、 findFirstallMatch、anyMatch、noneMatchsortedcount Stream流前言 Java8特性主要是Stream流以及函数式接口的出现;本片文章主…...
基于Springboot中小企业设备管理系统设计与实现(论文+源码)_kaic
摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…...
ORACLE 12 C估算 用户历史上的CPU消耗
在使用ASH不能满足,需要从AWR,即HIST系列表估算每个用户的cpu消耗,只能进行大概估算 先计算各用户使用的cpu time计算出各用户占比将用户cpu time 与osstat的cpu 使用率相乘 with cpu_usage as (select snap_id,BUSY_TIME/(IDLE_TIMEBUSY…...
Zookeeper 简明使用教程
Zookeeper 简明使用教程 ZooKeeper是一个开源的分布式协调服务,用于管理和维护分布式系统中的配置信息、命名服务、分布式锁、分布式队列等。 一、环境 JDK环境 二、下载 $ wget https://dlcdn.apache.org/zookeeper/zookeeper-3.9.2/apache-zookeeper-3.9.2-bin…...
JS 利用 webcam访问摄像头 上传到服务器
webcam JS 较为详细的指南 定义标题 <!doctype html> <html> <head><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>How to capture picture from webcam with Webcam.js</title></…...
【微信小程序】【小程序样式加载不出来】
微信小程序配置sass 第一步:找配置文件 在项目中找到 project.config.json文件,在setting属性中添加 useCompilerPlugins属性,值为sass即可,若是 less,将数组里面的值改为less即可 "useCompilerPlugins": ["sas…...
【THM】Exploit Vulnerabilities(利用漏洞)-
介绍 在这个房间里,我们将讨论一些识别漏洞的方法,并结合我们的研究技能来了解这些漏洞是如何被滥用的。 此外,您还会发现一些公开可用的资源,这些资源是您在执行漏洞研究和利用时的技能和工具的重要补充。然后,您将在房间的最后将所有这些应用到实际挑战中。 自动化与…...
Tomcat管理配置
Tomcat管理配置 1 host-manager项目2 manager项目 Tomcat 提供了Web版的管理控制台,位于webapps目录下。Tomcat 提供了用于管理Host的host-manager和用于管理Web应用的manager。 1 host-manager项目 Tomcat启动之后,可以通过 http://localhost:8080/ho…...
C++模版简单认识与使用
目录 前言: 1.泛型编程 2.函数模版 3.类模版 为什么要有类模版?使用typedef不行吗? 类模版只能显示实例化: 注意类名与类型的区别: 注意类模版最好不要声明和定义分离: 总结: 前言&…...
图解大型网站多级缓存的分层架构
前言 缓存技术存在于应用场景的方方面面。从浏览器请求,到反向代理服务器,从进程内缓存到分布式缓存,其中缓存策略算法也是层出不穷。 假设一个网站,需要提高性能,缓存可以放在浏览器,可以放在反向代理服…...
基于Vision Transformer的迁移学习在乳腺X光图像分类中的应用
乳房X线摄影(MG)在乳腺癌的早期发现中起着重要作用。MG可以在早期阶段发现乳腺癌,即使是感觉不到肿块的小肿瘤。基于卷积神经网络(CNN)的DL最近吸引了MG的大量关注,因为它有助于克服CAD系统的限制(假阳性、不必要的辐射暴露、无意义的活组织检查、高回调…...
WebGIS 地铁交通线网数据可视化监控平台
数字孪生技术在地铁线网的管理和运维中的应用是一个前沿且迅速发展的领域。随着物联网、大数据、云计算以及人工智能技术的发展,地铁线网数字孪生在智能交通和智慧城市建设中的作用日益凸显。 图扑软件基于 HTML5 的 2D、3D 图形渲染引擎,结合 GIS 地图&…...
批量导入svg文件作为图标使用(vue3)vite-plugin-svg-icons插件的具体应用
目录 需求svg使用简述插件使用简述实现安装插件1、配置vite.config.ts2、src/main.ts引入注册脚本3、写个icon组件4、使用组件 需求 在vue3项目中,需要批量导入某个文件夹内数量不确定的svg文件用来作为图标,开发完成后能够通过增减文件夹内的svg文件&a…...
X服务器远程连接问题解决:Bad displayname ““‘或Missing X server or $DISPLAY
X服务器远程连接问题 报错1 ImportError: this platform is not supported: (failed to acquire X connection: Bad displayname "", DisplayNameError()) Try one of the following resolutions: * Please make surethat you have an X server running, and that …...
matlab:五点中心差分求解Navier边界的Biharmonic方程(具有纳维尔边界的双调和方程)
我们考虑如下形式的双调和方程的数值解 其中,Ω是欧氏空间中的多边形或多面体域,在其中,d为维度,具有分段利普希茨边界,满足内部锥条件,f(x) ∈ L2(Ω)是给定的函数,∆是标准的拉普拉斯算子。算…...
详细介绍微信小程序app.js
这一节,我们详细介绍app.js 这个文件。这个文件的重要性我就不再赘述,前面已经介绍了。 一、app.js是项目的主控文件 任何一个程序都是需要一个入口的,就好比我们在学c的时候就会有一个main函数,其他语言基本都是一样。很明确的…...
【六 (2)机器学习-EDA探索性数据分析模板】
目录 文章导航一、EDA:二、导入类库三、导入数据四、查看数据类型和缺失情况五、确认目标变量和ID六、查看目标变量分布情况七、特征变量按照数据类型分成定量变量和定性变量八、查看定量变量分布情况九、查看定量变量的离散程度十、查看定量变量与目标变量关系十一…...
Java集合——Map、Set和List总结
文章目录 一、Collection二、Map、Set、List的不同三、List1、ArrayList2、LinkedList 四、Map1、HashMap2、LinkedHashMap3、TreeMap 五、Set 一、Collection Collection 的常用方法 public boolean add(E e):把给定的对象添加到当前集合中 。public void clear(…...
Python TensorFlow 2.6 获取 MNIST 数据
Python TensorFlow 2.6 获取 MNIST 数据 2 Python TensorFlow 2.6 获取 MNIST 数据1.1 获取 MNIST 数据1.2 检查 MNIST 数据 2 Python 将npz数据保存为txt3 Java 获取数据并使用SVM训练4 Python 测试SVM准确度 2 Python TensorFlow 2.6 获取 MNIST 数据 1.1 获取 MNIST 数据 …...
EChart简单入门
echart的安装就细不讲了,直接去官网下,实在不会的直接用cdn,省的一番口舌。 cdn.staticfile.net/echarts/4.3.0/echarts.min.js 正入话题哈 什么是EChart? EChart 是一个使用 JavaScript 实现的开源可视化库,Echart支持多种常…...
阿里云8核32G云服务器租用优惠价格表,包括腾讯云和京东云
8核32G云服务器租用优惠价格表,云服务器吧yunfuwuqiba.com整理阿里云8核32G服务器、腾讯云8核32G和京东云8C32G云主机配置报价,腾讯云和京东云是轻量应用服务器,阿里云是云服务器ECS: 阿里云8核32G服务器 阿里云8核32G服务器价格…...
设计模式,工厂方法模式
工厂方法模式概述 工厂方法模式,是对简单工厂模式的进一步抽象和推广。以我个人理解,工厂方法模式就是对生产工厂的抽象,就是用一个生产工厂的工厂来进行目标对象的创建。 工厂方法模式的角色组成和简单工厂方法相比,创建了一个…...
WPF中嵌入3D模型通用结构
背景:wpf本身有提供3D的绘制,但是自己通过代码描绘出3D是比较困难的。3D库helix-toolkit支持调用第三方生成的模型,比如Blender这些,所以在wpf上使用3D就变得非常简单。这里是一个通过helix-toolkit库调用第三方生成的3d模型的样例…...
举个例子说明联邦学习
学习目标: 一周掌握 Java 入门知识 学习内容: 联邦学习是一种机器学习方法,它允许多个参与者协同训练一个共享模型,同时保持各自数据的隐私。 联邦学习概念(例子): 假设有三家医院,它们都希望…...
【Python】免费的图片/图标网站
专栏文章索引:Python 有问题可私聊:QQ:3375119339 这里是我收集的几个免费的图片/图标网站: iconfont-阿里巴巴矢量图标库icon(.ico)INCONFINDER(.ico)...
Pytorch中的nn.Embedding()
模块的输入是一个索引列表,输出是相应的词嵌入。 Embedding.weight(Tensor)–形状模块(num_embeddings,Embedding_dim)的可学习权重,初始化自(0,1)。 也就是…...
WebSocketServer后端配置,精简版
首先需要maven配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>2.1.3.RELEASE</version></dependency> 然后加上配置类 这段代码是一个Spri…...
网站弹窗在中间位置/网站收录查询系统
在Card_Info表中,有一个字段是“Status”,这篇博客的由来就是我在考虑Status这个字段到底有没有用的过程中产生的。 …...
动态网站整站源码下载器/湖南专业的关键词优化
说明 在使用git提交代码的时候总是会遇到对于文件名称修改的情况,其他情况下git还是可以识别出删除和新增的文件的,但是在大小写修改的时候,git默认是不区分大小写的,导致在本地显示是正确的但是在远程仓库出现了一个大写一个小写…...
wordpress 音乐/快速排名优化怎么样
先浅复习一下es6 let与const 作⽤域 全局作⽤域 局部作⽤域 块级作⽤域 let ⽤法:声明⼀个变量 特点: 只在声明的代码块内有效 在同⼀作⽤域内不允许重复声明 没有变量提升 暂时性死区 用法:声明一个只读的变量(可理解为常量) …...
wordpress文本块字体大小/b站在线观看
Kafka消费者的偏移量和高级/简单消费者 提交和偏移量 提交:更新分区的当前位置称为提交,当前版本(0.10.1.1)用topic ___consumer_offsets 保存提交的偏移量 偏移量:消费者在Kafka追踪到消息在分区里的位置 消费者在崩溃或者有新的消费者加…...
电子商务网站发展建设论文/广告投放平台有哪些
对自己过去一段时间的科研工作进行了总结,做了一个视频.有网格优化的人脸对齐,三维人脸自动纹理的生成,BlendShape表情动画的自动生成,还有求解三角网格表面的近似测地线,有共同兴趣的多交流:http://www.tudou.com/programs/view/qssbF0pzYpg…...
淮南市住房与城乡建设部网站/宁波seo外包服务平台
前言:不会QT和MFC,所以就在控制台实现socket之Select模型聊天室。 一、概述 程序使用到MySQL(很简单的运用)技术和Select编程模型,以MySQL数据库中关系辅以socket编程实现对目标好友或群组发送接收消息。可以同时允许…...