【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://www.mzph.cn/news/749056.shtml

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

相关文章

【python小技能】使用Python发送电子邮件的完整指南(适合零基础)

前言 在现代通信中&#xff0c;电子邮件是一种不可或缺的工具。使用Python编程语言&#xff0c;我们可以轻松地编写代码来发送电子邮件。本文将为零基础的读者提供一个完整的指南&#xff0c;教你如何使用Python发送电子邮件 安装库 首先&#xff0c;我们需要安装smtplib库。…

wordpress被恶意搜索攻击(网址/?s=****)解决方法。

源地址&#xff1a;https://www.ctvol.com/seoomethods/1413686.html 什么叫恶意搜索攻击&#xff1f; wordpress恶意搜索攻击并不是像病毒一样的攻击&#xff0c;而是一种seo分支黑帽手段&#xff0c;通过被攻击网站搜索功能中长尾关键词来实现攻击&#xff0c;通过网址不断…

Clickhouse MergeTree原理(二)—— 表和分区的维护

作者&#xff1a;俊达 引言 MergeTree是Clickhouse中最核心的存储引擎。上一篇文章中&#xff0c;我们介绍了MergeTree的基本结构。 1、MergeTree由分区&#xff08;partiton&#xff09;和part组成。 2、Part是MergeTree可操作的基本数据单元。 当插入数据时&#xff0c;会…

MySQL 中的“两阶段提交”机制

在MySQL数据库中&#xff0c;为了确保redo log&#xff08;重做日志&#xff09;和binlog&#xff08;二进制日志&#xff09;之间的数据安全性和一致性&#xff0c;引入了“两阶段提交”这一重要概念。MySQL将redo log的写入过程细分为“prepare”和“commit”两个步骤&#x…

【LeetCode热题100】146. LRU 缓存(链表)

一.题目要求 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c…

Jenkins插件Parameterized Scheduler用法

Jenkins定时触发构建的同时设定参数。可以根据不同的定时构建器设置不同参数或环境变量的值。可以设置多个参数。并结合when控制stage流程的执行。结合when和triggeredBy区分定时构建的stage和手动执行的stage。 目录 什么是Parameterized Scheduler&#xff1f;如何配置实现呢…

代码随想录训练营Day24:● 理论基础 ● 77. 组合

理论基础 回溯算法解决的问题 回溯法&#xff0c;一般可以解决如下几种问题&#xff1a; 组合问题&#xff1a;N个数里面按一定规则找出k个数的集合 切割问题&#xff1a;一个字符串按一定规则有几种切割方式 子集问题&#xff1a;一个N个数的集合里有多少符合条件的子集 排列…

yolo项目中如何训练自己的数据集

1.收集自己需要标注的图片 2.打开网站在线标注网站 2.1 点击右下角Get Start 2.2点击这里上传自己的图片 上传成功后有英文的显示 点击左边的Object Detection&#xff0c;表示用于目标检测 2.3选择新建标签还是从本地加载标签 如果是本地加载标签&#xff08;左边&#…

基本常用函数help()

Python内置函数 help()函数&#xff1a;查看对象的帮助信息 print()函数&#xff1a;用于打印输出 input()函数&#xff1a;根据输入内容返回所输入的字符串类型 format()函数&#xff1a;格式化显示 len()函数&#xff1a;返回对象的长度或项目个数 slice()函数&#xf…

26-Java访问者模式 ( Visitor Pattern )

Java访问者模式 摘要实现范例 访问者模式&#xff08;Visitor Pattern&#xff09;使用了一个访问者类&#xff0c;它改变了元素类的执行算法&#xff0c;通过这种方式&#xff0c;元素的执行算法可以随着访问者改变而改变访问者模式中&#xff0c;元素对象已接受访问者对象&a…

TouchGFX之MVP

TouchGFX用户接口遵循Model-View-Presenter&#xff08;MVP&#xff09;架构模式&#xff0c;它是Model-View-Controller&#xff08;MVC&#xff09;模式的派生模式。 两者都广泛用于构建用户接口应用。 MVP模式的主要优势是&#xff1a; 关注点分离&#xff1a;将代码分成不…

mysql 排序底层原理解析

前言 本章详细讲下排序&#xff0c;排序在我们业务开发非常常见&#xff0c;有对时间进行排序&#xff0c;又对城市进行排序的。不合适的排序&#xff0c;将对系统是灾难性的&#xff0c;这个不是危言耸听。可能有些人会想&#xff0c;对于排序mysql 是怎么实现的&#xff0c;…

Android 地图SDK 绘制点 删除 指定

问题 Android 地图SDK 删除指定绘制点 详细问题 笔者进行Android 项目开发&#xff0c;对于已标记的绘制点&#xff0c;提供撤回按钮&#xff0c;即删除绘制点&#xff0c;如何实现。 解决方案 新增绘制点 private List<Marker> markerList new ArrayList<>…

Oracle数据库:使用 bash脚本 + 定时任务 自动备份数据

Oracle数据库&#xff1a;使用 bash脚本 定时任务 自动备份数据 1、前言2、为什么需要自动化备份&#xff1f;3、编写备份脚本4、备份脚本授权5、添加定时任务6、重启 crond / 检查 crond 服务状态7、备份文件检查 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收…

解决:InheritableThreadLocal与线程池共用的问题

回顾一下上篇文章&#xff1a;InheritableThreadLocal和ThreadLocal的区别和使用场景 上篇文章介绍道&#xff0c;InheritableThreadLocal 是 ThreadLocal 的一个子类&#xff0c;它不但继承了ThreadLocal的所有特性&#xff0c;父线程中的 InheritableThreadLocal 变量的值可以…

AI赋能写作:AI大模型高效写作一本通

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。2022年度博客之星评选TOP 10&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作…

Java学习笔记(15)

JDK7前时间相关类 Date时间类 Simpledateformat Format 格式化 Parse 解析 默认格式 指定格式 EE&#xff1a;表示周几 Parse&#xff1a;把字符串时间转成date对象 注意&#xff1a;创建对象的格式要和字符串的格式一样 Calendar日历类 不能创建对象 Getinstance 获取当…

深度学习pytorch——索引与切片

indexing import torch a torch.rand(4,3,28,28) # 表示4张28*28的rgb图 print(a[0].shape) # a[0]获得第一张图片 print(a[0,0].shape) # a[0,0]获得第一张图片的r图 print(a[0,0,2,4]) # 获得第一张图片第一个通道的一个像素点&#xf…

【C#】【SAP2000】读取SAP2000中所有Frame对象在指定工况的温度荷载值到Grasshopper中

if (build true) {// 连接到正在运行的 SAP2000// 使用 COM 接口获取 SAP2000 的 API 对象cOAPI mySapObject (cOAPI)System.Runtime.InteropServices.Marshal.GetActiveObject("CSI.SAP2000.API.SapObject");// 获取 SAP2000 模型对象cSapModel mySapModel mySap…

4262. 空调(acwing)

文章目录 4262. 空调题目描述贪心差分难点解析差分数组的更新计算最小命令数量更新差分数组反向差分计算计算最小指令数量 4262. 空调 题目描述 Farmer John 的 N头奶牛对他们牛棚的室温非常挑剔。 有些奶牛喜欢温度低一些&#xff0c;而有些奶牛则喜欢温度高一些。 Farmer…