【字符串】【双指针】1、仅仅反转字母+2、回文子串+ 3、最长回文子串+4、验证回文串+5、反转字符串中的单词

今天依旧是字符串!2道简单+3道中等

1、仅仅反转字母(难度:简单)

在这里插入图片描述
在这里插入图片描述

该题对应力扣网址

错误做法

一开始是“原始”思路,交了之后果然不对,错误的思路我也就不解释了。

class Solution {
public:string reverseOnlyLetters(string s) {int n=s.length();int i,temp;for(i=0;i<n/2;i++){if((s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i]<='Z')){temp=s[i];s[i]=s[n-i-1];s[n-i-1]=temp;}}return s;}
};

AC代码

想了一下还是用前几天刚学过的双指针就行(真香了)

class Solution {
public:bool alphabet(char ch){if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z')){return true;}return false;}string reverseOnlyLetters(string s) {int n=s.length();int left=0,right=n-1,temp;while(left<=right){if(alphabet(s[left]) && alphabet(s[right])){temp=s[left];s[left]=s[right];s[right]=temp;left++;right--;}else if(!alphabet(s[left]) && alphabet(s[right])){while(!alphabet(s[left])){left++;}temp=s[left];s[left]=s[right];s[right]=temp;left++;right--;}else if(alphabet(s[left]) && !alphabet(s[right])){while(!alphabet(s[right])){right--;}temp=s[left];s[left]=s[right];s[right]=temp;left++;right--;}else{left++;right--;}}return s;}
};

2、回文子串(难度:中等)

在这里插入图片描述
该题对应力扣网址

AC代码

一开始没啥思路,只有笨方法,(觉得写了肯定也超时) 大概看了题解推荐的方法,其中这个双指针中心点的方法还是挺简单的,dp那个方法没看懂,等做dp类型的时候再说。
这道题就是和普通的判断是否是回文串反过来了,判断回文串,一般都是从两边往中间,双指针。
这道题是找字符串里有多少回文串,是从中心点往两边双指针
思路:
中心点分两类:一个中心点、两个中心点
然后从中间往两边看两边对应位置的字符是否一样

class Solution {
public:int countSubstrings(string s) {int n = s.length();int i,j,k;int left,right;int num = 0;//遍历字符串里每个字符for(i=0;i<n;i++){//确定一个或两个中心点for(j=0;j<=1;j++){left=i;right=i+j;if(j==1){if(s[left]!=s[right]){continue;}}while(left>=0 && right<=n && s[left--]==s[right++]){num++;}}}return num;}
};

3、最长回文子串(难度:中等)

在这里插入图片描述
该题对应力扣网址

AC代码

没啥,和上一题的思路基本一致

class Solution {
public:static bool cmp(const pair<string,int> &a,const pair<string,int> &b){return a.second>b.second;}string longestPalindrome(string s) {int i,j,k,l,r,count;int n = s.length();vector <pair<string,int>> str;for(i=0;i<n;i++){for(j=0;j<=1;j++){count=0;l=i;r=i+j;if(j==1){if(s[l]!=s[r]){continue;}}while(l>=0 && r<=n-1 &&l<=r && s[l--]==s[r++]){count++;}if(j==1){str.push_back({s.substr(i-count+1,count*2), count*2});}if(j==0){str.push_back({s.substr(i-count+1,(count-1)*2+1), (count-1)*2+1});}}}sort(str.begin(),str.end(),cmp);return str[0].first;}
};

4、验证回文串(难度:简单)

在这里插入图片描述

该题对应力扣网址

AC代码

没啥说的

class Solution {
public://判断是不是大写字母bool daxie(char ch){if(ch>='A' && ch<='Z'){return true;}return false;}//判断是不是小写字母bool xiaoxie(char ch){if(ch>='a' && ch<='z'){return true;}return false;}//判断是不是数字bool shuzi(char ch){if(ch>='0' && ch<='9'){return true;}return false;}//判断是不是回文串bool huiwen(string str){int n = str.length();int l=0,r=n-1;while(l<=r){if(str[l]==str[r]){l++;r--;}else{return false;}}return true;}bool isPalindrome(string s) {int i,j=0,k;int n = s.length();string str="";for(i=0;i<n;i++){if(daxie(s[i])){str+=s[i]+32;}else if(xiaoxie(s[i])){str+=s[i];}else if(shuzi(s[i])){str+=s[i];}}return huiwen(str);}
};

5、反转字符串中的单词(难度:中等)

在这里插入图片描述
该题对应力扣网址

AC代码

没看题解,思路依旧是双指针,r指针从后往前,遍历完一个单词之后,l指针从前往后,遍历这个单词,并加入到新的字符串str中。
主要有四种情况,按照代码的顺序依次是:
1、单词左面第一个空格
2、字符串第一个字符且该字符不是空格
3、存在连续的多个空格
4、单词中的字符
注意:写代码的时候,不注意的话,数组容易溢出,建议在判断条件里把边界放在前面,例如while(r>=0 && s[r]==' ')

class Solution {
public:string reverseWords(string s) {int i,j,k,count=0;int l,r;string str="";r=s.length()-1;while(r>=0){if(s[r]==' ' && s[r+1]!=' ' && r+1<=s.length()-1){l=r;cout<<r<<" "<<count<<endl;while(count>0){l++;str+=s[l];count--;}count=0;str+=' ';}else if(r==0 && s[r]!=' '){l=r;while(count>=0){str+=s[l];l++;count--;}count=0;}//存在多个空格else if(s[r]==' '){while( r>=0 && s[r]==' '){r--;}continue;}else{count++;}r--;}int n=str.length()-1;//把多余的最后的空格删掉if(str[n]==' '){str.pop_back();}return str;}
};

中间出去玩儿了两天,今天才补上,慢慢来吧

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

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

相关文章

高考未上本科线,大专不是唯一归宿

高考&#xff0c;作为人生中的一次重要考试&#xff0c;其结果往往牵动着无数家庭的心。然而&#xff0c;当高考成绩未能达到本科线时&#xff0c;是否就意味着大专是唯一的选择呢&#xff1f;其实不然&#xff0c;现代教育体系的多样化为我们提供了更多的可能性&#xff0c;其…

openinstall拥抱鸿蒙生态,SDK全面适配HarmonyOS NEXT

作为国内领先的App渠道统计与深度链接服务商&#xff0c;openinstall持续推动鸿蒙生态建设&#xff0c;近日正式发布openinstall HarmonyOS SDK&#xff0c;并成功入驻鸿蒙生态伙伴SDK专区&#xff0c;成为华为鸿蒙生态的合作伙伴&#xff0c;为鸿蒙应用开发者带来安全合规、高…

ONLYOFFICE 桌面编辑器 8.1华丽登场

简介&#xff1a;全新ONLYOFFICE 桌面编辑器 8.1解锁全新PDF编辑、幻灯片优化与本地化体验&#xff0c;立即下载&#xff01; 前言&#xff1a;在数字化时代&#xff0c;高效的办公协作工具是企业和个人不可或缺的利器。ONLYOFFICE&#xff0c;作为一款功能强大的云端和桌面办公…

数据结构-图的存储结构-邻接矩阵

图的结构十分复杂&#xff0c;不仅各个结点的度不同&#xff0c;各个顶点之间的路径也不尽相同。但是图的主要组成部分比较清晰&#xff0c;分为顶点信息和边或者弧的信息。 邻接矩阵 邻接矩阵就是用一维数组存储图中顶点的信息&#xff0c;用一个二维数组表示图中各个顶点之间…

uni-app与原生插件混合开发调试1-环境准备

uni-app与原生插件混合开发调试系列文章分为3篇&#xff0c;分别详细讲了《环境准备》、《搭建uni-app本地开发调试环境》和《安卓原生插件开发调试和打包》&#xff0c;3篇文章完整详细地介绍了“从环境安装配置到本地开发调试到原生插件打包”整个流程。 相关名词和概念解释…

FuTalk设计周刊-Vol.026

&#x1f525;&#x1f525;AI漫谈 热点捕手&#x1f525;&#x1f525; 1、Hotshot-XL AI文本转GIF Hotshot-XL 是一种 AI 文本转 GIF 模型&#xff0c;经过训练可与Stable Diffusion XL一起使用。能够使用任何现有或新微调的 SDXL 模型制作 GIF。 网页体验 网页http://htt…

智能体实战:开发一个集成国内AI平台的GPTs,自媒体高效智能助手

文章目录 一&#xff0c;什么是GPTs二&#xff0c;开发GPTs1&#xff0c;目标2&#xff0c;开发2.1 打开 GPTS&#xff1a;https://chat.openai.com/gpts2.2 点击 Create 创建一个自己的智能体 2.3 配置GPTs2.4 配置外挂工具2.4.1 配置Authentication-授权2.4.1.1 生成语聚AI的…

用FFmpeg合并音频和视频

使用FFmpeg合并音频和视频是一个相对直接的过程。可以通过以下一些基本的步骤和命令示例完成这个任务&#xff1a; 安装FFmpeg&#xff1a;首先&#xff0c;确保你的系统中已经安装了FFmpeg。你可以从[FFmpeg官网](Download FFmpeg)下载并安装它。 准备素材&#xff1a;确保你…

服务器重装系统后,远程ssh需要修改的内容

前提 首先实验室服务器内部是搭了内网的&#xff0c;所以有固定的IP,IP是和网卡的MAC地址有关的&#xff0c;所以和系统没有关系&#xff0c;所以更换了系统不会影响IP的。 修改内容 1、首先需要安装 SSH sudo apt install openssh-server2、之后需要修改ssh的配置参数 打…

itsdangerous,一个强大的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个强大的 Python 库 - itsdangerous。 Github地址&#xff1a;https://github.com/pallets/itsdangerous 在Web应用开发中&#xff0c;数据的安全传输和存储是非常重要的。P…

服务器部署—虚拟机安装nginx并部署web网页

该篇博客用于讲解Linux的Centos7发行版中如何通过Linux安装Nginx&#xff0c;然后将静态页面部署到Nginx中&#xff0c;通过浏览器访问。 非常适用于新手小白学习项目部署相关的知识。建议收藏&#xff01;&#xff01;&#xff01; 需要大家提前准备好虚拟机和CentOS7操作系统…

python API自动化(基于Flask搭建MockServer)

接口Mock的理念与实战场景: 什么是Mock: 在接口中&#xff0c;"mock"通常是指创建一个模拟对象来代替实际的依赖项&#xff0c;以便进行单元测试。当一个类或方法依赖于其他类或组件时&#xff0c;为了测试这个类或方法的功能&#xff0c;我们可以使用模拟对象来替代…

M4V文件损坏无法播放?一招轻松修复损坏视频文件!

M4V是一个标准视频文件格式&#xff0c;此种格式常在iPod 、 iPhone 和 PlayStation Portable等设备上使用&#xff0c;同时此格式基于MPEG-4编码第二版&#xff0c;是MP4格式的一种特殊类型&#xff0c;有时可能会因为各种原因而损坏&#xff0c;导致无法正常播放。M4V文件出现…

前端vue3 根据某些Id 筛选数据

现在有一些不等的数据 我需要通过前端 吧这个数据筛选一下 比如我使用一些 我需要的ID 下的数据 比如以上的数据 的 cinemaLineId 来筛选 const cinemaLineId ref(["1246429254713147392", "1182608813770321920", "1182608917403185152"])…

爬取必应关键字搜索结果url

上代码 import aiohttp import asyncio from lxml import etree import aiofiles import time import random aiohttp 和 asyncio 用于异步HTTP请求和事件循环。 lxml 用于解析HTML。 aiofiles 用于异步文件操作。 time 和 random 用于控制爬取速度。 headers {User-Agent: M…

frida的安装使用以及解决抓包app时遇到的证书校验

frida的安装和使用 这里使用夜神模拟器来演示frida的使用&#xff0c;因为真机开启frida-server服务时需要root权限,模拟器自带root 下载夜神模拟器并启动 夜神官网 打开power shell&#xff0c; adb连接模拟器&#xff0c;查看模拟器的系统型号 adb connect 127.0.0.1:6200…

阿里云centos7.9 挂载数据盘 并更改宝塔站点根目录

一、让系统显示中文 参考&#xff1a;centos7 怎么让命令行显示中文&#xff08;英文-&#xff1e;中文&#xff09;_如何在命令行中显示中文-CSDN博客 1、输入命令&#xff1a;locale -a |grep "zh_CN" 可以看到已经存在了中文包 2、输入命令&#xff1a;sudo vi…

SecureCRT使用SSH登录服务器报错:Key exchange failed

SecureCRT使用SSH登录Ubuntu服务器报错&#xff1a;Key exchange failed 原因&#xff1a; ssh客户端与服务器的公钥协商失败&#xff0c;SecureCRT客户端所指定的秘钥交换算法&#xff08;KexAlgorithms &#xff09;&#xff0c;不在服务端支持范围内。可能是服务端的sshd版…

学习笔记(linux高级编程)7

2._exit 系统调用 void _exit(int status); 功能: 让进程退出,不刷新缓存区 参数: status:进程退出状态 返回值: 缺省 回调函数 3.atexit int atexit(void (*function)(void)); 功能: 注册进程退出前执行的函数 参数: function:函数指针 指向void返回值void参数的函数指针 返…

C++ | Leetcode C++题解之第188题买卖股票的最佳时机IV

题目&#xff1a; 题解&#xff1a; class Solution { public:int maxProfit(int k, vector<int>& prices) {if (prices.empty()) {return 0;}int n prices.size();k min(k, n / 2);vector<int> buy(k 1);vector<int> sell(k 1);buy[0] -prices[0]…