当前位置: 首页 > news >正文

【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中的使用(一):仅仅反转字母、字符串中的第一个唯一字母、字符串最后一个单词的长度、验证回文串、字符串相加

前言&#xff1a; &#x1f3af;个人博客&#xff1a;Dream_Chaser &#x1f388;博客专栏&#xff1a;C &#x1f4da;本篇内容&#xff1a;仅仅反转字母、字符串中的第一个唯一字母、字符串最后一个单词的长度、验证回文串、字符串相加 目录 917.仅仅反转字母 题目描述&am…...

【25考研】:四川大学计算机学院24届874考研考情分析

去年的考情分析也是我做的&#xff0c; 今年就在去年的基础上做了。保持形式不变&#xff0c;更改数据。 21考情&#xff1a; 万载月寒肠断客&#xff1a;四川大学计算机学院21届CS考研考情分析 22考情&#xff1a; 懒羊羊&#xff1a;四川大学计算机学院2022考研考情分析 2…...

【GPT-4 Turbo】、功能融合:OpenAI 首个开发者大会回顾

GPT-4 Turbo、功能融合&#xff1a;OpenAI 首个开发者大会回顾 就在昨天 2023 年 11 月 6 日&#xff0c;OpenAI 举行了首个开发者大会 DevDay&#xff0c;即使作为目前大语言模型行业的领军者&#xff0c;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流以及函数式接口的出现&#xff1b;本片文章主…...

基于Springboot中小企业设备管理系统设计与实现(论文+源码)_kaic

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…...

ORACLE 12 C估算 用户历史上的CPU消耗

在使用ASH不能满足&#xff0c;需要从AWR&#xff0c;即HIST系列表估算每个用户的cpu消耗&#xff0c;只能进行大概估算 先计算各用户使用的cpu time计算出各用户占比将用户cpu time 与osstat的cpu 使用率相乘 with cpu_usage as (select snap_id,BUSY_TIME/(IDLE_TIMEBUSY…...

Zookeeper 简明使用教程

Zookeeper 简明使用教程 ZooKeeper是一个开源的分布式协调服务&#xff0c;用于管理和维护分布式系统中的配置信息、命名服务、分布式锁、分布式队列等。 一、环境 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 第一步&#xff1a;找配置文件 在项目中找到 project.config.json文件&#xff0c;在setting属性中添加 useCompilerPlugins属性&#xff0c;值为sass即可&#xff0c;若是 less,将数组里面的值改为less即可 "useCompilerPlugins": ["sas…...

【THM】Exploit Vulnerabilities(利用漏洞)-

介绍 在这个房间里,我们将讨论一些识别漏洞的方法,并结合我们的研究技能来了解这些漏洞是如何被滥用的。 此外,您还会发现一些公开可用的资源,这些资源是您在执行漏洞研究和利用时的技能和工具的重要补充。然后,您将在房间的最后将所有这些应用到实际挑战中。 自动化与…...

Tomcat管理配置

Tomcat管理配置 1 host-manager项目2 manager项目 Tomcat 提供了Web版的管理控制台&#xff0c;位于webapps目录下。Tomcat 提供了用于管理Host的host-manager和用于管理Web应用的manager。 1 host-manager项目 Tomcat启动之后&#xff0c;可以通过 http://localhost:8080/ho…...

C++模版简单认识与使用

目录 前言&#xff1a; 1.泛型编程 2.函数模版 3.类模版 为什么要有类模版&#xff1f;使用typedef不行吗&#xff1f; 类模版只能显示实例化&#xff1a; 注意类名与类型的区别&#xff1a; 注意类模版最好不要声明和定义分离&#xff1a; 总结&#xff1a; 前言&…...

图解大型网站多级缓存的分层架构

前言 缓存技术存在于应用场景的方方面面。从浏览器请求&#xff0c;到反向代理服务器&#xff0c;从进程内缓存到分布式缓存&#xff0c;其中缓存策略算法也是层出不穷。 假设一个网站&#xff0c;需要提高性能&#xff0c;缓存可以放在浏览器&#xff0c;可以放在反向代理服…...

基于Vision Transformer的迁移学习在乳腺X光图像分类中的应用

乳房X线摄影(MG)在乳腺癌的早期发现中起着重要作用。MG可以在早期阶段发现乳腺癌&#xff0c;即使是感觉不到肿块的小肿瘤。基于卷积神经网络(CNN)的DL最近吸引了MG的大量关注&#xff0c;因为它有助于克服CAD系统的限制(假阳性、不必要的辐射暴露、无意义的活组织检查、高回调…...

WebGIS 地铁交通线网数据可视化监控平台

数字孪生技术在地铁线网的管理和运维中的应用是一个前沿且迅速发展的领域。随着物联网、大数据、云计算以及人工智能技术的发展&#xff0c;地铁线网数字孪生在智能交通和智慧城市建设中的作用日益凸显。 图扑软件基于 HTML5 的 2D、3D 图形渲染引擎&#xff0c;结合 GIS 地图&…...

批量导入svg文件作为图标使用(vue3)vite-plugin-svg-icons插件的具体应用

目录 需求svg使用简述插件使用简述实现安装插件1、配置vite.config.ts2、src/main.ts引入注册脚本3、写个icon组件4、使用组件 需求 在vue3项目中&#xff0c;需要批量导入某个文件夹内数量不确定的svg文件用来作为图标&#xff0c;开发完成后能够通过增减文件夹内的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方程(具有纳维尔边界的双调和方程)

我们考虑如下形式的双调和方程的数值解 其中&#xff0c;Ω是欧氏空间中的多边形或多面体域&#xff0c;在其中&#xff0c;d为维度&#xff0c;具有分段利普希茨边界&#xff0c;满足内部锥条件&#xff0c;f(x) ∈ L2(Ω)是给定的函数&#xff0c;∆是标准的拉普拉斯算子。算…...

详细介绍微信小程序app.js

这一节&#xff0c;我们详细介绍app.js 这个文件。这个文件的重要性我就不再赘述&#xff0c;前面已经介绍了。 一、app.js是项目的主控文件 任何一个程序都是需要一个入口的&#xff0c;就好比我们在学c的时候就会有一个main函数&#xff0c;其他语言基本都是一样。很明确的…...

【六 (2)机器学习-EDA探索性数据分析模板】

目录 文章导航一、EDA&#xff1a;二、导入类库三、导入数据四、查看数据类型和缺失情况五、确认目标变量和ID六、查看目标变量分布情况七、特征变量按照数据类型分成定量变量和定性变量八、查看定量变量分布情况九、查看定量变量的离散程度十、查看定量变量与目标变量关系十一…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...