【OJ】string类题目

个人主页 : zxctscl
如有转载请先通知

题目

  • 1. 415字符串相加
    • 1.1 分析
    • 1.2 代码
  • 2. 344反转字符串
    • 2.1 分析
    • 2.2 代码
  • 3. HJ1字符串最后一个单词的长度
    • 3.1 分析
    • 3.2 代码
  • 4. 387.字符串中的第一个唯一字符
    • 4.1 分析
    • 4.2 代码
  • 5. 125验证回文串
    • 5.1 分析
    • 5.2 代码

1. 415字符串相加

在这里插入图片描述

1.1 分析

要实现字符串的相加,先得定位到两个字符串的最后一个字符:

int end1=num1.size()-1;
int end2=num2.size()-1;

如果最后一个字符相加大于10,就得进位
在这里插入图片描述
再定义一个变量用来记录进位int next=0;。重新定义一个string的字符串用来记录相加结果string retstr
当两个字符相加,得注意,要转换为整形相加,当ret大于10,那么next=ret/10,而字符穿要记录的是ret=ret%10,再头插retstr.insert(0,1,ret+'0'),头插时要转换为字符头插。
如果9+1,那么返回结果就是0,所以不能忘记少插入进位值,在最后判断一下,再进行头插:

if(next==1)retstr.insert(retstr.begin(),'1');

在这里插入图片描述

1.2 代码

class Solution {
public:string addStrings(string num1, string num2) {int next=0;string retstr;int end1=num1.size()-1;int end2=num2.size()-1;while(end1>=0||end2>=0){int val1=end1>=0?num1[end1--]-'0':0;int val2=end2>=0?num2[end2--]-'0':0;int ret=val1+val2+next;next=ret/10;ret=ret%10;retstr.insert(0,1,ret+'0');}if(next==1)retstr.insert(retstr.begin(),'1');return retstr;
}};

2. 344反转字符串

在这里插入图片描述

2.1 分析

这里题目要求在原地修改,直接用swap进行交换就可以。如果size是偶数那么刚好全部都交换了,如果是奇数,那么除了区间之间的都要交换。
直接用两个变量,一个从前面开始走int l = 0,一个从后面走int r = n - 1,循环结束条件就是:当l等于r就结束,奇数中间的就不会换,偶数也刚好交换完。

        while(l< r){swap(s[l], s[r]);l++; r--;}  

在这里插入图片描述

2.2 代码

class Solution {
public:void reverseString(vector<char>& s) {int n=s.size();int l = 0;int r = n - 1;while(l< r){swap(s[l], s[r]);l++; r--;}  }
};

3. HJ1字符串最后一个单词的长度

在这里插入图片描述

3.1 分析

这里用getline得到输入的一行单词,要获取最后一个单词的长度,那么就得先找到最后一个单词。
在string中有一个rfind是从后往前找,只需要找到第一个空格位置,在这个位置后面一个位置,那就是最后一个单词开始位置,记录下这个位置size_t pos=str.rfind(' ');
然后用size减去这个位置加1就是最后一个单词的长度str.size()-(pos+1)
在这里插入图片描述

3.2 代码

#include <iostream>
using namespace std;int main() {string str;getline(cin,str);size_t pos=str.rfind(' ');cout<<str.size()-(pos+1)<<endl;}
// 64 位输出请用 printf("%lld")

4. 387.字符串中的第一个唯一字符

在这里插入图片描述

4.1 分析

开一个计数数组,题目只包含小写字母,所以开26个就可以了int count[26]={0};,做一个相对映射,每一个减97。遍历字符串记录出现次数。

for(auto ch:s){count[ch-'a']++;}

可能会出现出现一次的有多个,要找第一个,就得从前往后遍历一下。
第一个出现次数为1的就返回它的下标,没有就返回-1。

for(int i=0;i<s.size();i++){if(count[s[i]-'a']==1)return i;}return -1;

在这里插入图片描述

4.2 代码

class Solution {
public:int firstUniqChar(string s) {int count[26]={0};for(auto ch:s){count[ch-'a']++;}for(int i=0;i<s.size();i++){if(count[s[i]-'a']==1)return i;}return -1;}
};

5. 125验证回文串

在这里插入图片描述

5.1 分析

这里可能会出现大写和数字,故重新定义一个字符串,用来保存将原字符串中将大写变为小写的新字符串。
介绍要用到的函数isalnum(char c) 是否为字母或者数字;islower(char c) 是否为小写字母
遍历s查找里面的字符,不管是不是小写,一律都转化成小写。

 string s1;for (char ch: s) {if (isalnum(ch)) {s1+=tolower(ch);}}

将转为小写的s1先用s2记录一份,再用reverse()逆置,reverse(s2.begin(),s2.end());
再将逆置后的s2与s1进行compare,如果结果为0就为真。反之则为false。
在这里插入图片描述

5.2 代码

class Solution {
public:bool isPalindrome(string s) {string s1;for (char ch: s) {if (isalnum(ch)) {s1+=tolower(ch);}}string s2=s1;reverse(s2.begin(),s2.end());if(s1.compare(s2)==0){return true;}return false;}
};

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

载人航天、超级计算机、深海深地探测......政府工作报告中,这些科技“关键词”令人振奋!

​​​​​​​3月5日上午&#xff0c;备受瞩目的十四届全国人大一次会议在人民大会堂隆重开幕。政府工作报告中提到载人航天、探月探火、深海深地探测等科技关键词。​​​​​​​ 3月5日上午&#xff0c;第十四届全国人民代表大会第一次会议在人民大会堂举行开幕会。 政府…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Column)

沿垂直方向布局的容器。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 可以包含子组件。 接口 Column(value?: {space?: string | number}) 从API version 9开始&#xff0c;该接口…

创业板指399006行情数据API接口

# 测试&#xff1a;返回不超过10条数据&#xff08;2年历史&#xff09; https://tsanghi.com/api/fin/index/CHN/daily?tokendemo&ticker399006&order2Python示例 import requestsurl f"https://tsanghi.com/api/fin/index/CHN/daily?tokendemo&ticker399…

mybatis源码阅读系列(一)

源码下载 mybatis 初识mybatis MyBatis 是一个优秀的持久层框架&#xff0c;它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射&#xff0c;将接口和 Java 的…

Simulink|局部遮荫下光伏组件多峰值PSO-MPPT控制

目录 主要内容 1.光伏电池工程数学模型的输出特性程序 2.普通扰动观察法进行MPPT 3.基于粒子群寻优的多峰输出特性 4.PSO_MPPT仿真模型 程序下载链接 主要内容 在实际的光伏发电系统中,由于环境多变等因素的影响,当局部出现被遮挡情况时光伏阵列的功率-电压(P-U)特…

docker login 阿里云失败??

docker login 阿里云失败&#xff1f;&#xff1f; 首先参考 阿里云官方文档《Docker登录、推送和拉取失败常见问题》 看看是否是下面提到的情况&#xff1a; 我遇到的情况是超时: [rootk8snode1 software]# sudo docker login --usernametyleryun registry.cn-hangzhou.ali…

SpringBoot集成Redisson实现接口限流

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Dat…

力扣L10--- 3. 无重复字符的最长子串--2024年3月14日

1.题目 2.知识点 注1&#xff1a;containsKey 是 Java 中 HashMap 类的一个方法&#xff0c;用于检查哈希表中是否包含指定的键。 注2&#xff1a;在哈希表&#xff08;HashMap)中&#xff0c;每个键对应着唯一的值&#xff0c;因此键不能重复&#xff0c;但值可以重复。 (1)创…

结构体联合体枚举和位段

文章目录 结构体结构体类型的声明特殊的声明 结构的自引用结构体变量的定义和初始化结构体内存对齐为什么要内存对齐结构体传参结构体实现位段&#xff08;位段的填充&可移植性&#xff09;位段位段的内存分配空间如何开辟位段的跨平台问题位段的应用 枚举枚举类型的定义枚…

Pyqt5中,QGroupBox组件标题字样(标题和内容样式分开设置)相对于解除继承

Python代码示例&#xff1a; import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QGroupBox, QLabelclass MyApp(QWidget):def __init__(self):super().__init__()# 创建一个 QVBoxLayout 实例layout QVBoxLayout()# 创建 QGroupBox 实例self.grou…

微信小程序原生<map>地图实现标记多个位置以及map 组件 callout 自定义气泡

老规矩先上效果图: 1 、在pages文件夹下新建image文件夹用来存放标记的图片。 2、代码片段 也可以参考小程序文档:https://developers.weixin.qq.com/miniprogram/dev/component/map.html index.wxml代码 <mapid="map"style="width: 100%; height:100%;&…

ARM汇编与逆向工程:蓝狐卷基础知识

与传统的CISC&#xff08;Complex Instruction Set Computer&#xff0c;复杂指令集计算机&#xff09;架构相比&#xff0c;Arm架构的指令集更加简洁明了&#xff0c;指令执行效率更高&#xff0c;能够在更低的功耗下完成同样的计算任务&#xff0c;因此在低功耗、嵌入式等领域…

[嵌入式系统-39]:龙芯1B 开发学习套件 -10-PMON启动过程Sstart.S详解

目录 一、龙芯向量表与启动程序的入口&#xff08;复位向量&#xff09; 1.1 复位向量&#xff1a; 1.2 代码执行流程 1.3 计算机的南桥 VS 北桥 二、PMON代码执行流程 三、Start.S详解 3.1 CPU初始化时所需要的宏定义 &#xff08;1&#xff09;与CPU相关的一些宏定义…

2024人工智能四大趋势→

2023年&#xff0c;世人见证了ChatGPT在全球范围的大火。以生成式人工智能为代表的新一代人工智能问世&#xff0c;改变了人工智能&#xff08;AI&#xff09;技术与应用的发展轨迹&#xff0c;加速了人与AI的互动进程&#xff0c;是人工智能发展史上的新里程碑。2024年&#x…

皂液器问卷调查

媳妇非要买这种皂液器&#xff0c;来问问友友们有用过的帮忙识别一下是否是真的好用&#xff1a;皂液器问卷调查 4个题

SMART PLC 卷径计算(圈数检测+膜厚叠加法)

1、卷径计算(膜厚叠加+数值积分器应用博途PLC SCL代码) https://rxxw-control.blog.csdn.net/article/details/136719982https://rxxw-control.blog.csdn.net/article/details/1367199822、膜厚叠加法 https://rxxw-control.blog.csdn.net/article/details/128600466

[题解]无厘头题目——无聊的军官

这道题非常无厘头&#xff01; 题目描述&#xff1a; 每个学年的开始&#xff0c;高一新生们都要进行传统的军训。今年有一个军训教官十分奇怪&#xff0c;他为了测试学员们的反应能力&#xff0c;每次吹哨后学员们都会变换位置。每次左数第I位学员都会站到第ai个位置&#x…

60种常用可视化图表的使用场景——(上)

文章目录 1、点阵图 2、点数图 3、弧线图 4、折线图 5、平行坐标图 6、网络图 7、象形图 8、直方图 9、密度图 10、人口金字塔 11、条形图 12、多组条形图 13、堆叠式条形图 14、不等宽柱状图 15、面积图 16、比例面积图 17、堆叠式面积图 18、量化波形图 19、雷达图 20、桑基图…

P8665 [蓝桥杯 2018 省 A] 航班时间:格式问题

题目链接&#xff1a; P8665 [蓝桥杯 2018 省 A] 航班时间 哎&#xff0c;这道题做了很长时间还是做错了&#x1f940; 代码 #include<iostream> #include<algorithm> using namespace std; int get() {int h1,m1,s1,h2,m2,s2,day0;scanf("%d:%d:%d %d:%d:…

重学SpringBoot3-整合SSM

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-整合SSM Spring Boot整合SSM示例1. 创建Spring Boot项目2. 配置数据源3. 配置MyBatis4. 实现数据访问对象&#xff08;DAO&#xff09;5. 编写服务层和控…