【回溯+双指针算法题记录】回文字符串汇总
目录
- 验证回文串
- 题目描述
- 题目分析
- cpp代码
- 131. 分割回文串
- 题目描述
- 题目分析
- cpp代码
验证回文串
题目🔗
题目描述
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
给你一个字符串 s
,如果它是 回文串 ,返回 true
;否则,返回 false
。
题目分析
这题主要问题在于包含非字母/数字字符,比如:' '
、','
、':'
等,所以我们要把这些情况考虑进去。
cpp代码
class Solution {
public:bool isPalindrome(string s) {int i = 0;int j = s.size()-1;while(i < j){while(i < j && !(isdigit(s[i]) || isalpha(s[i]))) i++;while(i < j && !(isdigit(s[j]) || isalpha(s[j]))) j--;if(tolower(s[i]) == tolower(s[j])){i++; j--;}else return false;}return true;}
};
这里用了几个C库函数,方便我们处理:
isdigit(x)
:判断x是否是数字;isalpha(x)
:判断x是否是字母;tolower(x)
:将大写字母转换成小写字母(如果本身是非字母字符则不变)。
131. 分割回文串
题目🔗
题目描述
给你一个字符串 s
,请你将 s
分割成一些子串,使每个子串都是 回文串 。返回 s
所有可能的分割方案。
题目分析
其实切割问题和组合问题本质上是一样的,我们将int startIndex
当作上一次的分割结束点,横向是从startIndex
到i
这个区间切割的可能情况,纵向是针对每一种可情况的startIndex
到i
切割,再从i+1
开始向后分割,即i+1
就是上一次的分割结束点。
每次分割时可以判断当前startIndex
到i
是不是回文字符串,如果是,则将当前分割结果放入path中,如果不是就continue,去看下一个startIndex
到i
。
cpp代码
class Solution {
public:vector<string> path;vector<vector<string>> result;bool isPalindrome(string s, int i, int j) {// int i = 0;// int j = s.size()-1;while(i < j){while(i < j && !(isdigit(s[i]) || isalpha(s[i]))) i++;while(i < j && !(isdigit(s[j]) || isalpha(s[j]))) j--;if(tolower(s[i]) == tolower(s[j])){i++; j--;}else return false;}return true;}void backtracking(int startIndex, const string& s){// 终止条件if(startIndex >= s.size()){ // 当startIndex超出s大小,则放结果result.push_back(path);return;}for(int i = startIndex; i < s.size(); i++){if(isPalindrome(s, startIndex, i)){ // 如果当前切割是回文串string str = s.substr(startIndex, i - startIndex + 1);path.push_back(str);}else continue;backtracking(i + 1, s);path.pop_back();}}vector<vector<string>> partition(string s) {result.clear();path.clear();backtracking(0, s);return result;}
};
相关文章:
【回溯+双指针算法题记录】回文字符串汇总
目录 验证回文串题目描述题目分析cpp代码 131. 分割回文串题目描述题目分析cpp代码 验证回文串 题目🔗 题目描述 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字…...
【AI资讯早报】AI科技前沿资讯概览:2024年7月10日早报
AI科技前沿资讯概览,涵盖了行业大会、技术创新、应用场景、行业动态等多个方面,全面展现了AI领域的最新发展动态和未来趋势。 一、人工智能大模型引领新业态 在2024年(第二十三届)中国互联网大会上,中国工程院院士邬贺…...

DDR3 SO-DIMM 内存条硬件总结(一)
最近在使用fpga读写DDR3,板子上的DDR3有两种形式与fpga相连,一种是直接用ddr3内存颗粒,另一种是通过内存条的形式与fpga相连。这里我们正好记录下和ddr3相关的知识,先从DDR3 SO-DIMM 内存条开始。 1.先看内存条的版本 从JEDEC下载…...

磁力搜索引擎是什么?为什么有些资源喜欢用磁力链接?
磁力链接是什么东西?在日常生活中,我们接触的比较多的下载链接是直链。 所谓的直链简单来说就是直接指向服务器文件资源的链接,如B站app的下载链接,这种链接有统一的服务器提供保障,通常比较稳定,可以追溯源…...

Vue基础--v-model/v-for/事件属性/侦听器
目录 一 v-model表单元素 1.1 v-model绑定文本域的value 1.1.1 lazy属性:光标离开再发请求 1.1.2 number属性:如果能转成number就会转成numer类型 1.1.3 trim属性:去文本域输入的前后空格 1.2v-model绑定单选checkbox 1.3代码展示 二 …...

『大模型笔记』GraphRAG:用于复杂数据发现的新工具现已在GitHub上发布
GraphRAG:用于复杂数据发现的新工具现已在GitHub上发布 文章目录 一. GraphRAG:用于复杂数据发现的新工具现已在GitHub上发布1. 评估和结果2. 研究见解和未来方向二. 参考文献一. GraphRAG:用于复杂数据发现的新工具现已在GitHub上发布 下载 GraphRAG今年早些时候,我们介绍…...

LabVIEW机器视觉技术在产品质量检测中有哪些应用实例
LabVIEW的机器视觉技术在产品质量检测中有广泛的应用,通过图像采集、处理和分析,实现对产品缺陷的自动检测、尺寸测量和定位校准,提高生产效率和产品质量。 1. 电子元器件质量检测 在电子制造业中,电子元器件的质量检测是确保产品…...

【Linux】多线程_2
文章目录 九、多线程2. 线程的控制 未完待续 九、多线程 2. 线程的控制 主线程退出 等同于 进程退出 等同于 所有线程都退出。为了避免主线程退出,但是新线程并没有执行完自己的任务的问题,主线程同样要跟进程一样等待新线程返回。 pthread_join 函数…...

58、基于径向基神经网络的曲线拟合(matlab)
1、基于径向基神经网络的曲线拟合简介及原理 1)原理简介 基于径向基神经网络(Radial Basis Function Neural Network, RBFNN)的曲线拟合是一种常用的非线性拟合方法,通过在输入空间中使用径向基函数对数据进行处理,实…...
3.上传图片(阿里云空间,oss验证)
笔记 20240710 未验证,现在还没有阿里云空间,等买个sit环境就可以验证一下。 前端 页面 <!--页面--> <el-form-item label"优惠券图片" prop"couponImg"><single-upload v-model"dataForm.couponImg"&g…...

仪表板展示|DataEase看中国:2023年中国新能源汽车经济运行情况分析
背景介绍 随着政府机构、企业和个人对环保和可持续发展的高度关注,“新能源汽车”在全球范围内成为了一个热门话题。新能源汽车是指使用非传统燃料(如电能、氢能等)作为动力源的汽车。 在中国市场,新能源汽车产业蓬勃发展&#…...

“Numpy数据分析与挖掘:高效学习重点技能“
目录 # 开篇 # 补充 zeros & ones eye 1. numpy数组的创建 1.1 array 1.2 range 1.3 arange 1.4 常见的数据类型 1.5 astype 1.6 random.random() & round 2. numpy数组计算和数组计算 2.1 reshape 2.2 shape 2.3 将一维数组变成多维数组 2.4 指定一维…...

百川工作手机实现销售管理微信监控系统
在瞬息万变的商业战场中,每一分效率的提升都是企业制胜的关键。传统销售管理模式已难以满足现代企业对精准、高效、合规的迫切需求。今天,让我们一同探索如何利用工作手机这一创新工具,为您的销售团队装上智能翅膀,开启销售管理的…...

RAG 工业落地方案框架(Qanything、RAGFlow、FastGPT、智谱RAG)细节比对!CVPR自动驾驶最in挑战赛赛道,全球冠军被算力选手夺走了
RAG 工业落地方案框架(Qanything、RAGFlow、FastGPT、智谱RAG)细节比对!CVPR自动驾驶最in挑战赛赛道,全球冠军被算力选手夺走了。 本文详细比较了四种 RAG 工业落地方案 ——Qanything、RAGFlow、FastGPT 和智谱 RAG,重…...

华为防火墙 拓扑搭建1
拓扑图 要求 1.DMZ区内的服务器,生产区仅能在办公时间内(9:00-18:00)可以访问,办公区设备全天可以访问 配置安全策略 设置办公时间 2.生产区不允许访问互联网,办公区和游客区允许访问互联网…...

Linux 利用命名空间创建一个自己的“容器“
Linux 利用命名空间创建一个自己的"容器" 前置条件 创建一个目录存放容器mkdir /myapp准备静态编译busybox,操作系统自带的往往是依赖动态库的(本文使用的debian apt install busybox-static) 开始 使用unshare起一个独立命名空间.# 进入后/myapp目录…...

RAG的学习与实践——LangChain和LlamaIndex学习笔记
RAG RAG(Retrieval Augmented Generation)系统,代表“检索增强生成”。RAG由五个关键步骤组成: 加载:这是指将数据从其所在位置(无论是文本文件、PDF、其他网站、数据库还是 API)获取到您的管道中。LlamaHub提供数百…...
Python爬虫原理以及3个小案例(源码)
一、爬虫原理 网络爬虫是一种用于自动获取网页内容的程序。它模拟用户浏览网页的过程,通过发送HTTP请求获取网页的源代码,并利用解析和提取技术来获取所需的数据。 1. HTTP请求与响应过程 爬虫向目标网站发送HTTP请求,请求包含URL、请求方…...

Vagrant配合VirtualBox搭建虚拟机
目录 前言一、软件下载及安装1.下载2.安装扩展: 二、创建一个虚拟机1.Vagrant官方镜像仓库 三、使用远程工具连接虚拟机1.修改相关配置文件 四、虚拟机克隆及使用1.通用配置2.简单搭建一个java环境3.克隆虚拟机1.重命名虚拟机(可选)2.打包指定…...
Elasticsearch 建议(Suggesters):实现自动补全和拼写检查
引言 在现代搜索引擎中,自动补全和拼写检查功能已成为提升用户体验的重要工具。Elasticsearch,作为一款强大的分布式搜索和分析引擎,提供了多种Suggesters API来帮助开发者实现这些功能。本文将详细介绍Elasticsearch中的四种主要Suggester—…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...