"""
题目:给定一个字符串,请问该字符串中有多少个回文连续子字符串?例如,字符串'ABC'有3个回文子字符串,分别为'A','B','C';
而字符串‘AAA'有6个回文子字符串,分别为’A','A','A','AA','AA','AAA'
解题思路:这个题上来一看,我的脑子里就把它翻译为求子字符串为回文的个数。
前面已经做了很多子数组或者子字符串的题了,那一定是要用到双指针了。核心逻辑就是如何移动双指针。
首先确定双指针的起始位置和方向:
如果按照之前的两道回文的题目的逻辑,将双指针放在字符串的两头,然后向中间移动,思考一下就会发现移动完以后,只能得到一个回文
因此参考前面满足条件的子字符串的个数的逻辑(第14~17题),指针P1和指针P2应都从左边向右边移动。
然后确定双指针的移动算法:
回文不仅能通过从两端往中间看是否两端相等,也可以从中间开始逐步向两边扩散看两端是否相等。
因此参考这个逻辑,我们可以将指针逐个指向子回文的中间,然后判断它两端的字符是否一致,直到字符串两端。
例如,刚开始指向第一个元素,然后向两端扩散,扩散完后,发现只有它自己的回文。然后指向第二个元素,如此循环,直到指向最后一个元素。
这里要注意的是,回文的长度可以为奇数,也可以为偶数。长度为奇数的的回文对称中心只有一个字符,长度为偶数的字符串对称中心有两个字符。
因此如果是奇数字符串,两个指针应都从一个位置开始。如果是偶数字符串,指针P2要比指针P1多1.
"""
import re
def mirror_count_from_middle(t, start, end):
count = 0
while start >= 0 and end <= len(t)-1 and t[start] == t[end]:
start -= 1
end += 1
count += 1
return count
def mirror_count(t):
pattern = re.compile('[a-zA-Z0-9]')
new_t = pattern.findall(t.upper())
count = 0
for i in range(len(new_t)):
count += mirror_count_from_middle(new_t, i, i)
count += mirror_count_from_middle(new_t, i, i+1)
return count
t = 'aaa'
t1 = 'abc'
t2 = 'asdffgg'
t3 = ''
print(mirror_count(t))
print(mirror_count(t1))
print(mirror_count(t2))
print(mirror_count(t3))
相关推荐
浅谈回文串问题
回文串问题是字符串类型的题目中常见的一类。在绝大多数情况下,但凡涉及字符串问题都对“暴力算法”以及dfs等形式不太友好,常见的解决思路有动态规划,而除此之外,利用自动匹配机的性质,大牛们又发明了巧妙而高效的算法。本文在涉及“回文串类型问题”的解法之上,主要罗列一些常见的解决思路。 最粗暴的解法:暴力法O(N^3) 首先,可能大多数人都会想到利用回文串的性质,即S = reverse(S)...
字符串之回文串
本专题主要讲解leetcode上的几道关于回文串的几道简单题,均用C语言编写。 首先,我们介绍下什么是回文串,它是指正读和反读都是一样的字符串,举个例子,例如:“abba”是一个回文串,“abca”则不是。 下面直接看leetcode题,题目如下: 题目的意思比较简单,就是判断一个字符串是否能够组成回文串。 分析: 回文串的特点: 1. 如果字符串中出现的字符个数全为偶数,则一定可以组成回文子串; 2. 如果字符出现个数为奇数,并且该字符串里面有两个出现奇数的字符,则不可能组成回文串。 .
vivado:差分信号和单端信号 的相互转换 IBUFDS OBUFDS
FPGA能处理的都是单端信号,但有些输入信号是差分的,这时候就需要把差分信号转为单端信号。
回文字符串
(1)判断一个字符串是不是回文子串,分为两种情况,一种是字符串的长度为奇数个,另一种为偶数个,当为偶数个时对称相等就行。当为奇数个时,注意考虑要有一个字符的情况。 代码实现: #include<iostream> #include<string.h> using namespace std; int main() { int n; cin>>n; ...
雷达信号处理中的CLEAN算法实现与优化
在信号处理领域,杂波抑制是提升目标检测性能的关键技术。CLEAN算法作为一种迭代去卷积方法,通过逐步提取最强信号分量并消除其影响,有效解决了传统方法在复杂环境下的局限性。该算法结合自适应阈值和噪声基底估计,显著提高了雷达信号处理的精度和鲁棒性。在工程实践中,CLEAN算法广泛应用于气象雷达、地物杂波抑制等场景,通过Matlab仿真可以快速验证算法性能并优化参数设置。本文重点探讨了CLEAN算法在雷达信号处理中的实现细节和优化技巧,包括距离徙动补偿、多普勒补偿等关键技术。
OpenClaw与Ollama本地AI部署指南
AI模型本地化部署是当前企业数字化转型的关键技术,通过开源框架Ollama可以在消费级硬件上运行大语言模型。本文以OpenClaw多智能体系统为例,详解从环境配置到模型优化的全流程实践,特别针对国内开发者遇到的网络问题提供了镜像加速等解决方案。这种私有化部署方案尤其适合金融数据分析、企业知识管理等对数据安全要求高的场景,通过模块化设计实现多智能体协作,同时保持对NVIDIA显卡和普通CPU的兼容性。
字符串:子字符串回文的个数
求子字符串回文个数。 可以采取以子字符串中心,向外扩散的方式,移动指针来求回文的个数。需要注意中心点的选取分成回文长度是偶数和奇数两种情况。
从Multibit到Debanking:芯片设计中的时序优化完整流程解析(含真实案例)
本文深入解析芯片设计中Multibit技术与Debanking的时序优化完整流程,结合7nm移动SoC真实案例,详细探讨Multibit的核心优势、实施条件及潜在风险,并提供Debanking的触发时机与操作策略。通过平衡Multibit与Debanking,工程师可有效优化PPA(Power-Performance-Area),提升芯片设计效率。
manacher算法:回文串的O(n)算法
一般来说求回文串用hash或者后缀数组,但后缀数组是O(nlog(n)),hash比较麻烦,所以我们可以换一种O(n)的求回文串的算法。 对于回文串一般来说会有奇数和偶数之分,但是我们可以把串的头尾加上#号再把每个字符串之间加上#号,然后求每个点以它为中心的最长半径,对于偶数会问它的中心是#。 #include #include #include #include using namespac
34、Text2KGBench与GeoQuestions1089:知识图谱生成与地理空间问答的新进展
本文介绍了Text2KGBench和GeoQuestions1089在知识图谱生成与地理空间问答领域的最新进展。Text2KGBench提供了一个开放且可复现的基准,用于从文本生成知识图谱,并结合多个LLM模型和评估工具推动研究。GeoQuestions1089是目前最大的地理空间问答数据集,与GeoQA2系统结合,推动了地理空间问答系统的发展。文章还探讨了技术挑战和未来研究方向,包括多模态知识图谱生成和深度学习优化的地理空间问答系统。
Nvidia Jetson 编解码开发(3)解决H265解码报错“PPS id out of range”
基于之前的开发程序通过Jetson Xavier NX 硬编码的H265发出后,上位机断点播放发出来的H265码流,会报“PPS id out of range” 错误。
LeetCode 剑指 Offer II 回溯(下) 专题总结
回溯专题结束,接下来就是难啃的动态规划!关注博主,带你刷穿剑指offer
全局–局部傅里叶神经算子(GL-FNO):原理、严格推导与 PINN 混合策略
本文提出了一种全局-局部傅里叶神经算子(GL-FNO)及其与物理信息神经网络(PINN)的结合方法。主要内容包括: 架构设计:GL-FNO包含两个分支 - 全局分支处理低频结构,使用下采样输入;局部分支处理高频细节,使用全分辨率输入。两分支通过自适应门控机制融合。 理论分析:证明了GL-FNO在"低频全局+高频局部"任务上的优势,给出了误差分解和复杂度分析,并推导了与PINN结合时的渐进一致性条件。 实现方法:采用频谱微分计算物理残差,推导了完整的训练流程,包括数据损失与物理损失的联合优
剑指Offer(数据结构与算法面试题精讲)C++版——day7
剑指Offer(数据结构与算法面试题精讲)C++版——day7 题目一:最多删除一个字符得到回文 题目二:回文子字符串的个数 题目三:删除倒数第k个节点
大模型部署指南:SGLang 框架
本文介绍使用 SGLang 框架部署大模型
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
《剑指 Offer》专项突破版 - 面试题85、86 和 87 : 使用回溯法解决其他类型的问题(C++ 实现)
面试题 85 : 生成匹配的括号 面试题 86 : 分割回文子字符串 面试题 87 : 恢复 IP 地址
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
【leetcode】剑指Offer专项突击版含注释 Java版本(一)
以下文章主要是方便自我学习总结 感兴趣的也可一键三连互相学习 大部分算法题都是刷过很多次,知识点也比较重复,特殊情况下会重点讲解下代码思路 对应另一套算法题: 字节校园精选 66 道高频经典笔面试题(含多种思路)(上) 字节校园精选 66 道高频经典笔面试题(含多种思路)(下)
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
《剑指 Offer》专项突破版 - 面试题 18、19 和 20 - 详解回文字符串(C++ 实现)
面试题 18 : 有效回文 面试题 19 : 最多删除一个字符得到回文 面试题 20 : 回文子字符串的个数
【剑指 Offer(专项突击版)】 018 - 020 刷题笔记 回文 【双指针、DP、中心扩展】
文章目录[018 - 剑指 Offer II 018. 有效的回文【双指针】](https://leetcode-cn.com/problems/XltzEq/)[019 - 剑指 Offer II 019. 最多删除一个字符得到回文【贪心+双指针】](https://leetcode-cn.com/problems/RQku0D/)[020 - 剑指 Offer II 020. 回文子字符串的个数【动态规划、中心扩展】](https://leetcode-cn.com/problems/a7VOhD/)方
剑指offer(专项突破版):数据结构与算法名企面试题精讲 刷题记录
自己记录的刷题笔记
剑指Offer题目笔记25(使用回溯法解决其他类型问题)
当处理到字符串中的某个字符时,如果包括该字符在内后面还有n个字符,那么此时面临n个选项,即分割出长度为1的子字符串(只包含该字符)、分割出长度为2子字符串(即包含该字符及它后面的一个字符),以此类推,分割出长度为n的子字符串(即包含该字符在内的后面的所有字符)。因为要生成n个左括号和n个右括号,故需要走2n步,每一步生成一个括号,每一步都面临两个选项,既可能生成左括号也可能生成右括号。 输入一个正整数n,输出所有包含n个左括号和n个右括号的组合,要求每个组合的左括号和右括号匹配。
【LeetCode】剑指 Offer Ⅱ 第3章:字符串(7道题) -- Java Version
本章的题目主要分为两种类型:变位词 和 回文;对应的解题思路主要是双指针,对于变位词,我们可以使用一个哈希表来统计每个字符出现的次数,从而判断两个字符串是不是一组变位词。对于回文,我们可以选择从两端向中间移动双指针,也可以选择从中间向两端移动。014. 字符串中的变位词 \ 015. 找到字符串中所有字母异位词 \ 016. 不含重复字符的最长子字符串 \ 017. 最小覆盖子串【变位词】;018. 有效的回文 \ 019. 最多删除一个字符得到回文 \ 020. 回文子字符串的个数【回文字符串】。
回文字符串判断以及最长回文字符串长度判断
回文字符串,就是正着反着读都一样的字符串。 1、回文字符串判断 假如这个字符串为奇数长度的回文字符串,则除了最中间的字符外,其左右的字符串两两相同。 假如这个字符串为偶数长度的回文字符串,则其左右完全对称。 代码如下: #include<iostream> #include<string> using namespace std; bool palindrome(strin...
回文字符串——庞果网
题目依旧是来自庞果网。 题目详情: 回文字符串是指从左到右和从右到左相同的字符串,现给定一个仅由小写字母组成的字符串,你可以把它的字母重新排列,以形成不同的回文字符串。 输入:非空仅由小写字母组成的字符串,长度不超过100; 输出:能组成的所有回文串的个数(因为结果可能非常大,输出对1000000007取余数的结果)。 例如:输入"aabb" 输出为2(因为“aabb”对应的所有回文字符
为何除了11以外,回文质数都是奇数位数?
也就是说,偶数位数回文数必定不是正数 回忆小学数学, 如果差是0(0也能被11整除)即奇数位数字之和与偶数位数字之和相同,这个数也能被11整除 而所有的偶数位回文数必定满足上面这个条件,因此回文质数都是奇数位数 ...
回文 - 回文的性质
回文的性质 以前,一看到回文这两个字我就头大。记得有一次去面试的时候,我看到回文,脑子一片空白(PS: 菜的呀 TvT )。前两天松鼠做了回文的问题,他说其实掌握了回文的性质其实还好。我一听,对!问题的关键在于要先把性质梳理一下,之后很多问题就迎刃而解了!接下来,我们就一步步来吧! 回文定义 - Palindrome 一个数字或者字符串正读/反读都一样,例如,1221,123454321,“abcdcba”等等。 首先,给大家一个判断String是否为回文的算法。 public boolean
2256



被折叠的 条评论
为什么被折叠?



