【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,一经查实,立即删除!

相关文章

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

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

【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;收…

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 获取当…

【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…

315曝光黑灰产业链:主板机

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 315晚会曝光主板机黑灰产业链&#xff0c;主板机是什么呢?可能很多人还不知道。在这里松松给大家普及一下&#xff0c;也欢迎大家关注卢松松哟! 主板机是什么呢? 通过报废手机的主板&#xff0c;拆出来后组装成主…

专升本 C语言笔记-06 常用的3种输入输出函数

1.scanf() 与 printf() 的使用 scanf() 格式化输入数据 格式:scanf("格式控制字符串",参数地址列表) scanf("%d,%d,%d",&a,&b,&c); printf("a %d\n",a); printf("b %d\n",b); printf("c %d\n",c); 注意 注…

【数据结构】堆

目录 一、树的介绍以及堆 1.树 2.二叉树以及堆 二、堆的实现 1.heap.h 2.heap.c 1)堆的初始化和销毁 2&#xff09; 堆的插入 3&#xff09;堆的删除 4&#xff09;取堆顶数据 5&#xff09;堆的数据个数 6&#xff09;堆的判空 3.test.c 一、树的介绍以及堆 …

跨境电商选品实战——Ownips公开数据信息安全采集+Python爬虫轻松搞定Lazada电商选品

文章目录 一、引言二、Lazada电商平台选品实战2.1、分析Lazada电商平台的商品列表接口2.2、定位商品列表计算逻辑2.3、封装高质量住宅IP2.4、运行爬虫 三、数据处理及选品分析四、Ownips——企业级全球静态住宅IP&#xff0c;高效采集公开数据 一、引言 互联网与外贸的结合&am…

Maya自定义工具架

有时候我们需要自己定义工具架上的内容&#xff0c;比如将一个工具放到工具架上&#xff0c;或者删除一个工具 添加一个工具 例如我们想在多边形建模栏位上添加一个分离按钮&#xff0c;默认 1 先切换到想要添加的工具架栏位 2 打开菜单&#xff0c;找到我们想添加的工具 …

70城市房价同比继续下降

据北京商报的最新报道&#xff0c;昨&#xff08;3月15日&#xff09;天国家统计局发布《2月70个大中城市商品住宅销售价格》显示&#xff0c;2024年2月&#xff0c;在70个大中城市中&#xff0c;各线城市商品住宅销售价格同比继续下降。 一线城市二手住宅销售价格同比下降6.3…