算法通关村第十二关-字符串基础题目

反转字符串

思路:遍历字符串,将第i个字符和第N-i-1个字符串交换即可;
代码实现:

#include <iostream>
#include <string>
using namespace std;// 反转字符串
string reserveString(string str)
{if (str.size() == 0 || str.size() == 1){return str;}string res = str;// 使用双指针交换指向的数值int left = 0;int right = str.size() - 1;while (left < right){char temp = res[left];res[left] = res[right];res[right] = temp;right--;left++;}return res;
}
int main()
{// 反转字符串string s = "hello world!";string r = reserveString(s);cout << r << endl;return 0;
}

K组反转字符串

题目:反转字符串2

思路:每2k个一组,将其前k个字符反转,使用i+k与字符串长度n判断剩余字符串长度属于(0,k)还是 [k,2k)之间;然后按照要求剩余字符串即可;

代码实现:

#include <iostream>
#include <string>
using namespace std;void reverse(string &s, int left, int right)
{while (left < right){char temp = s[left];s[left] = s[right];s[right] = temp;right--;left++;}
}
// K组一个反转字符串
void resverseKString(string &s, int k)
{for (int i = 0; i < s.size(); i += 2 * k){int left = i;int right;if (i + k <= s.size()){// 剩余字符个数在[k,2k)之间right = i + k - 1;}else if (i + k > s.size()){// 剩余字符个数小于k个right = s.size() - 1;}reverse(s, left, right);}
}int main()
{//K组反转字符string s1 = "abcdefg";resverseKString(s1,2);cout << s1 << endl;return 0;
}

仅反转字符串中的字母

题目:仅仅反转字母

思路:
1、定义左右指针分别指向字符串字符串的头部和尾部;
2、持续向右移动左指针,直到找到第一个字母;
3、持续向左移动右指针,直到找到第一个字母;
4、交换左右指针指向的字符;
5、循环1,2,3 步骤,直到左指针大于等于右指针;

代码实现:

#include <iostream>
#include <string>
using namespace std;
//仅仅反转字母
void reverseChar(string &s)
{int left = 0;int right = s.size()-1;while(left < right){while(!isalpha(s[left]))//isalpha()函数判断当前字符是否是字母{left++;}while(!isalpha(s[right])){right--;}char temp = s[left];s[left] = s[right];s[right] = temp;right--;left++;}
}
int main()
{//仅仅反转字母string s2 = "a-bC-dEf-ghIj";reverseChar(s2);cout << s2 << endl;return 0;
}

验证回文字符串

题目:验证回文字符串

思路:
1、将字符串中字母和数字取出组成待判断的字符串,由于不区分大小写,因此将遇到的字母全部转换为大写/小写;
2、定义左右指针分别指向字符串字符串的头部和尾部;
3、判断左右指针指向的字符是否相等,如果相等,移动指针继续判断;如果不相等,不是回文字符串,直接返回false;

代码实现:

#include <iostream>
#include <string>
using namespace std;
//验证回文字符串
bool isPalidrome(string s)
{bool res = true;//统计字符串中的所有字母数字 不区分大小写,所以将所有字母保存为小写string str = "";for(auto a : s){if(isalnum(a)){str += tolower(a);}}int left = 0;int right = str.size()-1;while(left < right){if(str[left] != str[right]){res = false;return res;}left++;right--;}return res;
}
int main()
{//验证回文字符串string s3 = "A man,a plan, a canal, Panama";bool r3 = isPalidrome(s3);cout << r3 << endl;return 0;
}

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

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

相关文章

2024 年1月12日最热NLP大模型论文:Transformers are Multi-State RNNs

揭秘Transformer的无限可能&#xff0c;Meta研究发现Transformer其实是多状态RNN 引言&#xff1a;重新定义Transformer的视角 在自然语言处理&#xff08;NLP&#xff09;的领域&#xff0c;Transformer架构自2017年提出以来&#xff0c;已经成为了一种主流的模型&#xff0…

【mysql】有关mysql查询隐式类型转换的问题

在MySQL中&#xff0c;如果id字段是int类型且作为主键&#xff0c;那么执行以下两个查询&#xff1a; WHERE id IN (1,2,3)和 WHERE id IN ("1","2","3")理论上&#xff0c;在处理时MySQL会将字符串类型的值 "1", "2", &q…

OpenSSL升级版本

1 查看openssl版本 $ openssl version OpenSSL 1.0.2k-fips 26 Jan 2017 目前是1.0版本系列. 2 下载最新稳定版本的OpenSSL源码包 $ wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz 3 编译源码安装 tar -xzvf openssl-1.1.1q.tar.gz cd openssl-1.1.1q .…

【安装】Linux安装ffmpeg

ffmpeg 下载地址 Index of /releases (ffmpeg.org) 下载 wget https://ffmpeg.org//releases/ffmpeg-6.1.1.tar.gz tar -zxvf ffmpeg-6.1.1.tar.gz 进入解压后目录,输入如下命令/usr/local/ffmpeg为自己指定的安装目录 cd ffmpeg-6.1.1 ./configure --prefix/usr/local/ffm…

第十四章JSON

第十四章JSON 1.什么是JSON2.JSON的定义和访问3.JSON在JavaScript中两种常用的转换方式4.JavaBean和JSON的相互转换5.List集合和JSON的相互转换6.map集合和JSON的相互转换 1.什么是JSON 2.JSON的定义和访问 JSON的定义 JSON的类型是一个Object类型 JSON的访问 我们要…

K8S动态PV

pv和pvc存储卷 存储卷&#xff1a; emptyDir容器内部&#xff0c;随着pod销毁&#xff0c;emptyDir也会消失&#xff0c;不能做数据持久化 hostPath&#xff1a;持久化存储数据&#xff0c;可以和节点上目录做挂载。pod被销毁了数据还在 NFS&#xff1a;一台机器&#xff0…

芋道框架----(业务表单工作流)短信通知流程分析

芋道中给的请假流程示例&#xff0c;在发起流程的时候&#xff0c;可以看到它是由短信通知的&#xff0c;找了好久&#xff0c;想看看是什么时候触发的&#xff0c;之前一直以为是监听器&#xff0c;结果导致思维先入为主&#xff0c;陷入了怪圈&#xff0c;现做如下总结。 首先…

C //练习 5-15 增加选项-f,使得排序过程不考虑字母大小写之间的区别。例如,比较a和A时认为它们相等。

C程序设计语言 &#xff08;第二版&#xff09; 练习 5-15 练习 5-15 增加选项-f&#xff0c;使得排序过程不考虑字母大小写之间的区别。例如&#xff0c;比较a和A时认为它们相等。 注意&#xff1a;代码在win32控制台运行&#xff0c;在不同的IDE环境下&#xff0c;有部分可…

轻松批量重命名,一键随机并控制长度:让你的文件夹名充满无限可能

在数字时代&#xff0c;我们拥有海量的数据和文件&#xff0c;其中很多都存储在各种文件夹中。然而&#xff0c;随着时间的推移&#xff0c;文件夹名称可能变得不再相关或难以记忆。如何给这些文件夹一个全新的、充满创意的名字&#xff1f;今天&#xff0c;我们为你带来了这款…

20/100 删除链表的倒数第 N 个结点 21/100 有效的括号 22/100 合并两个有序列表

20/100 删除链表的倒数第 N 个结点 题目&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 题解&#xff1a; 方法1&#xff1a;第一次完整遍历一遍得到长度&#xff0c;第二次遍历到倒数第n个数据前一个&#xff0c;进…

vue3中组合式api的常用方法

vue3中组合式api的常用方法 记录一下vue3中常用的组合式api&#xff0c;包括计算属性computed、监听器watch及watchEffective 一、computed 作用&#xff1a;根据已有数据计算出新数据&#xff08;和Vue2中的computed作用一致&#xff09;。 <template><div class&…

Bom 和 Dom 区别 ----- 真是DOM 和 虚拟Dom区别

DOM和BOM的区别 我们都指代&#xff0c;javascript由三个部分组成&#xff1a; ECMAScript&#xff1a;描述了JS的语法和基本对象 BOM(浏览器对象)&#xff1a;与浏览器交互的方法和对象 DOM(文档对象模型)&#xff1a;处理网页内容的方法和接 ps&#xff1a;根据宿主&#x…

Nerf相关研究

1.Nerf相关研究 随着Luma AI的到来&#xff0c;再次将Nerf推向浪尖&#xff0c;实用性进一步得到强化。Nerf仍以极速的发展速度前行&#xff0c;越来越多的研究方向不断涌现。 4K-Nerf 4K-NeRF: High Fidelity Neural Radiance Fields at Ultra High Resolutions 论文&#…

JVM内存模型深度剖析与优化

欢迎大家关注我的微信公众号&#xff1a; 目录 JVM整体结构及内存模型 JVM内存参数设置 JVM整体结构及内存模型 首先附一段简单代码&#xff0c;我们从代码层面来讲解内存模型 public class Math {public static final int initData 666;public static User user new …

Qt中的线程池

Qt中的线程池 目录 1 为什么需要线程池 2 Qt中有哪些方式实现线程池 3 如何通过QThreadPool类实现线程池 4 如何通过QtConcurrent库实现线程池 5 如何通过自定义的方式实现线程池 5 小结 1 为什么需要线程池 线程池是多线程编程中常用的一种技术&#xff0c;可以帮助管理系统中…

性能测试分析案例-定位DNS解析很慢

环境准备 预先安装 docker 等工具&#xff0c;如 apt install docker.io。 操作和解析 执行下面的命令&#xff0c;拉取案例中使用的 Docker 镜像&#xff1a; docker pull feisky/dnsutils运行下面的命令&#xff0c;查看主机当前配置的 DNS 服务器&#xff1a; cat /etc…

你知道谁才是 “最懂程序员” 的搜索引擎?

大家好&#xff0c;我是奇兵&#xff0c;作为一名程序员&#xff0c;我们开发的过程中几乎每天都和搜索引擎打交道&#xff0c;利用它来搜文档、解决 Bug 等等。 而随着 AI 的发展&#xff0c;搜索引擎也变得越来越智能&#xff0c;市面上也涌现除了越来越多的 AI 搜索引擎。 …

【qt】sdk写pro写法,cv,onnx,cudnn

我的sdk在OpenCV003项目里&#xff1a; pro中添加 CONFIG(release, debug|release) {LIBS -L$$PWD/sdk/onnxruntime-x64-gpu/lib/ -lonnxruntimeLIBS -L$$PWD/sdk/onnxruntime-x64-gpu/lib/ -lonnxruntime_providers_cudaLIBS -L$$PWD/sdk/onnxruntime-x64-gpu/lib/ -lon…

GBASE南大通用GBaseCommandBuilder 类

自动生成单表命令&#xff0c;当使用 GBASE南大通用DataSet 对象的方法将变更的内容写回到对应数据库时&#xff0c;需使用GBASE南大通用 GBaseCommandBuilder 进行协调关联。无法继承此类。 对于该类所有成员的列表&#xff0c;参考 GBaseCommandBuilder 成员。 一、继承层次…

深入探索JavaScript中实用而高级的Rest参数和Spread语法

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 函数是JavaScript这个语言的核心,而如何处理函数的参数是函数编程中非…