【C++语言】字符串String练习题

题目连接: 仅仅反转字母

1.仅仅反转字母

给你一个字符串 s ,根据下述规则反转字符串:

  • 所有非英文字母保留在原有位置。
  • 所有英文字母(小写或大写)位置反转。

返回反转后的 s 。

示例 1:

输入:s = "ab-cd"
输出:"dc-ba"

示例 2:

输入:s = "a-bC-dEf-ghIj"
输出:"j-Ih-gfE-dCba"

示例 3:

输入:s = "Test1ng-Leet=code-Q!"
输出:"Qedo1ct-eeLg=ntse-T!"

 题解:

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) {if(S.empty())return S;size_t 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;}
};

题目链接:字符串中的第一个唯一字符

2.字符串中的第一个唯一字符

给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。

示例 1:

输入: s = "leetcode"
输出: 0

示例 2:

输入: s = "loveleetcode"
输出: 2

示例 3:

输入: s = "aabb"
输出: -1

提示:

  • 1 <= s.length <= 105
  • s 只包含小写字母
class Solution {
public:int firstUniqChar(string s) {// 统计每个字符出现的次数int count[256] = {0};int size = s.size();for(int i = 0; i < size; ++i)count[s[i]] += 1;// 按照字符次序从前往后找只出现一次的字符 for(int i = 0; i < size; ++i)if(1 == count[s[i]])return i;return -1;}
};

题目链接:字符串最后一个单词的长度

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

描述

计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)

输入描述:

输入一行,代表要计算的字符串,非空,长度小于5000。

输出描述:

输出一个整数,表示输入字符串最后一个单词的长度。

示例1

输入:hello nowcoder

输出:8

说明:最后一个单词为nowcoder,长度为8

#include<iostream>
#include<string>
using namespace std;
int main()
{string line;// 不要使用cin>>line,因为会它遇到空格就结束了 // while(cin>>line)while(getline(cin, line)){size_t pos = line.rfind(' ');cout<<line.size()-pos-1<<endl;}return 0;
}

题目链接: 验证回文串

3.验证回文串

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

字母和数字都属于字母数字字符。

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 

示例 1:

输入: s = "A man, a plan, a canal: Panama"
输出:true
解释:"amanaplanacanalpanama" 是回文串。

示例 2:

输入:s = "race a car"
输出:false
解释:"raceacar" 不是回文串。

示例 3:

输入:s = " "
输出:true
解释:在移除非字母数字字符之后,s 是一个空字符串 "" 。
由于空字符串正着反着读都一样,所以是回文串。

提示:

  • 1 <= s.length <= 2 * 105
  • s 仅由可打印的 ASCII 字符组成
class Solution {
public:bool 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;}
};

题目链接:字符串相加

4.字符串相加

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。

示例 1:

输入:num1 = "11", num2 = "123"
输出:"134"

示例 2:

输入:num1 = "456", num2 = "77"
输出:"533"

示例 3:

输入:num1 = "0", num2 = "0"
输出:"0"

提示:

  • 1 <= num1.length, num2.length <= 104
  • num1 和num2 都只包含数字 0-9
  • num1 和num2 都不包含任何前导零
class Solution {
public:string addstrings(string num1, string num2) 
{// 从后往前相加,相加的结果到字符串可以使用insert头插// 或者+=尾插以后再reverse过来int end1 = num1.size()-1;int end2 = num2.size()-1;int value1 = 0, value2 = 0, next = 0;string addret;while(end1 >= 0 || end2 >= 0){if(end1 >= 0)value1 = num1[end1--]-'0';elsevalue1 = 0;if(end2 >= 0)value2 = num2[end2--]-'0';elsevalue2 = 0;int valueret = value1 + value2 + next;if(valueret > 9){next = 1;valueret -= 10;}else{next = 0;}//addret.insert(addret.begin(), valueret+'0');addret += (valueret+'0');}if(next == 1){//addret.insert(addret.begin(), '1');addret += '1';}reverse(addret.begin(), addret.end());return addret;}
};

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

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

相关文章

Linux学习(补充部分)

关键字 goto关键字 goto 是一个在编程语言中用于控制流的关键字,它允许程序跳转到代码中的标记处。尽管在一些编程规范中被视为不良实践,但在某些情况下,goto 仍然可以是一种有用的工具。 在 C、C++、Python、以及一些其他编程语言中,goto 的基本语法如下: goto label;…

STM32单片机C语言模块化编程实战:按键控制LED灯并串口打印详解与示例

一、开发环境 硬件&#xff1a;正点原子探索者 V3 STM32F407 开发板 单片机&#xff1a;STM32F407ZGT6 Keil版本&#xff1a;5.32 STM32CubeMX版本&#xff1a;6.9.2 STM32Cube MCU Packges版本&#xff1a;STM32F4 V1.27.1 虽然这里演示的是STM32F407&#xff0c;但是ST…

INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN

联表查询是指在数据库中同时查询多个表&#xff0c;并通过它们之间的关联条件将结果合并在一起。这通常通过 SQL 中的 JOIN 操作来实现。常见的 JOIN 类型包括 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN。 让我们通过一个示例来说明联表查询的基本用法。假设有两个表&a…

ros的master和apollo的cyber的异同

1、前言 ROS (Robot Operating System) 和 Apollo Cyber RT 是两种不同的机器人操作系统框架&#xff0c;各自设计以满足不同场景下尤其是自动驾驶领域的特定需求。虽然它们在设计理念和核心功能上有相似之处&#xff0c;如提供节点&#xff08;Nodes&#xff09;、消息传递机…

书生·浦语大模型第二期实战营第三节-茴香豆:搭建你的 RAG 智能助理 笔记和作业

来源&#xff1a; 视频教程&#xff1a;茴香豆&#xff1a;搭建你的 RAG 智能助理 文字教程&#xff1a;茴香豆&#xff1a;搭建你的 RAG 智能助理 作业来源&#xff1a;第三课作业 茴香豆web链接&#xff1a;茴香豆web-零编程接入飞书微信&#xff08;更新了高精度 LLM&am…

使用R语言生成频数分布表

概要 使用R语言生成频数分布表 在R语言中&#xff0c;可以使用freq()函数来生成频数分布表。首先&#xff0c;将需要分组的数据存储在一个向量中。然后&#xff0c;使用freq()函数将这个向量作为参数输入&#xff0c;即可生成频数分布表。以下是一个示例&#xff1a; 示例 …

代码随想录算法训练营day7 | 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和

454.四数相加II 有下面几种思路&#xff1a; 暴力解法&#xff0c;四重循环一个哈希表三重循环两重循环生成一个哈希表两重循环 使用两重循环&#xff1a; class Solution:def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]…

内插和抽取

抽取&#xff1a; 频域表达式的关系&#xff1a; 1、角频率扩大M倍 2、移动2pi、22pi…&#xff08;n-1&#xff09; 2pi 3、相加 4、幅度变为1/M 内插&#xff1a; 加入低通滤波&#xff0c;减小混叠&#xff0c;但是由于截短&#xff0c;也会造成误差&#xff0c;但是…

setTimeout运行机制

当调用 setTimeout 函数时&#xff0c;它用于安排在一定延迟后执行的代码块。它的运行机制如下&#xff1a; 调度任务&#xff1a; 当调用 setTimeout 时&#xff0c;JavaScript 引擎会创建一个定时器&#xff0c;并将指定的代码块&#xff08;回调函数&#xff09;添加到一个称…

贪吃蛇完整代码

贪吃蛇代码 Snake.h //Snake.h #include<windows.h> #include<stdbool.h> #include<stdlib.h> #include<stdio.h> #include<time.h>#define POS_X 24 #define POS_Y 5#define WALL L□ #define BODY L● #define FOOD L★ //类型的声明 // //…

linux复习提纲

后台运行 &&#xff1a;命令行尾输入&#xff0c;命令执行后台运行fg % 作业号&#xff1a;作业前台执行bg % 作业号&#xff1a;作业后台执行 用户权限 主user&#xff08;u&#xff09;-同一组的&#xff08;g&#xff09;-其他&#xff08;o&#xff09; rwx&#xf…

【YOLOv8改进[检测头Head]】YOLOv8的“新头”之动态头(DynamicHead)

目录 一 DynamicHead 二 YOLOv8的“新头”之动态头 1 总体修改 2 配置文件 3 训练 其他 一 DynamicHead 官方论文地址&#xff1a;https://arxiv.org/pdf/2106.08322.pdf 官方代码地址&#xff1a;GitCode - 开发者的代码家园 在计算机视觉应用中&#xff0c;目标检测…

软件著作权登记材料

1、计算机软件著作权登记申请表 2、申请者身份证明 (1)著作权人为企业法人的&#xff1a; 提交有效的企业法人营业执照或事业单位法人证书副本复印件&#xff0c;并需加盖单位公章; (2)著作权人为自然人的&#xff1a; ?提交有效的自然人身份证复印件(正反面复印)。提交《非职…

第四百七十五回

文章目录 1. 概念介绍2. 功能与用法2.1 主要功能2.2 使用方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"四个bublue包对比与总结"相关的内容&#xff0c;本章回中将介绍Get包.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中将介…

zustand关于状态变化,是写在内部,还是外部

在使用Zustand时&#xff0c;通常建议将逻辑写在Zustand内部。Zustand是一个状态管理库&#xff0c;它提供了一种简单且强大的方式来管理状态&#xff0c;并且它的设计初衷就是为了让状态管理更加简洁和直观。 在Zustand内部定义状态和操作函数&#xff0c;并通过useStore hoo…

文件、文件夹被占用无法删除

一、针对文件夹无法删除 1、我们打开这个无法删除的文件夹&#xff0c;复制这个文件夹的地址。 2、打开windows任务管理器&#xff0c;选择“性能”选项卡&#xff0c;点击“打开资源监视器”。 3、在“资源监视器”中&#xff0c;cpu中找到“关联的句柄”&#xff0c;在文本框…

4.12 SpringBoot整合AOP ❤❤❤

1. AOP简介 要介绍面向切面编程(Aspect-Oriented Programming,AOP),需要读者 首先考虑这样一个场景&#xff1a; 公司有一个人力资源管理系统目前已经上线&#xff0c;但是系统运行不稳定&#xff0c;有时运行得很慢&#xff0c;为了检测出到底是哪个环节出问题了&#xff0c;…

错了,全部错了

感觉还是挺有难度的吧。。 其实最小割在这种最大/最小化代价的问题上的拓展性是比最大流要好的&#xff0c;甚至有些问题用最大流建模后不好求而要转化为求最小割&#xff08;例如 CF1368H Breadboard Capacity&#xff0c;但是也不绝对&#xff0c;有极少数题是用最小割建模…

力扣HOT100 - 2. 两数相加

解题思路&#xff1a; 缺位的节点进行补零处理&#xff0c;如97323补充为973023 注意相加的进位问题 class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode head null, tail null;int carry 0;while (l1 ! null || l2 ! null) {int n1 l…

2013-2021年各省经济韧性相关测度指标面板数据

2013-2021年各省经济韧性相关测度指标面板数据 1、时间&#xff1a;2013-2021年 2、指标&#xff1a;城镇化率 %、财政科学技术支出&#xff08;亿元&#xff09;、万人高等教育在校人数&#xff08;万人&#xff09;、财政教育支出&#xff08;亿元&#xff09;、第三产业占…