验证回文串(双端队列实现)

面试算法高频01 双指针法:通过贪心策略避免暴力枚举,线性时间内找到最优解。移动规则:每次移动较短的指针,确保可能找到更高的柱子。正确性:虽然跳过了部分情况,但最优解一定在移动路径中被覆盖。该解法在时间和空间上均达到最优,是解决本题的经典方法。双指针法:通过j指针记录非零元素的位置,确保非零元素按顺序排列。原地操作:直接修改原数组,避免额外空间开销。高效性:仅需两次遍历,满足题目要求的最少操作次数。该解法在时间和空间上均达到最优,是解决本题的经典方法。动态规划。 阅读详情

在这里插入图片描述
我给出一个很巧妙的实现方法
1)先遍历存储到双端队列中(统一接受小写字符或者数字)
2)再通过removeFirst()和removeLast()方法来判断是否为回文串
思路十分简单,但要注意队列何时为空,要分字符串长度是奇还是偶数长度

class Solution {
    public boolean isPalindrome(String s) {
        //数字 0 -9 ----->48 - 57   A - Z 65 - 90  a - z 97 - 122 空格 32
        ArrayDeque<Character> queue = new ArrayDeque<>();
        for(int i = 0 ; i < s.length() ; i++){
            int k = isOK(s.charAt(i));
            if(k != -1){
                queue.add((char)k);
            }
        }
        int size = queue.size();
        while(!queue.isEmpty()){
            if((size%2 != 0 && queue.size() == 1))break ;
            if(queue.removeFirst() != queue.removeLast()){
                return false ;
            }
        }
        return true ;
    }
    public int isOK(char x){
        int k = x+0;
        if(k >= 48 && k <= 57)return k;
        if(k >= 97 && k <= 122)return k;
        if(k >= 65 && k <= 90)return k + 32; 
        return -1;
    }
}
LeetCode Hot 100 代码实现 文章目录1. 两数之和(Easy,哈希)49. 字母异位词分组(Medium,哈希)128. 最长连续序列(Medium,哈希)283. 移动零(Easy,双指针)11. 盛最多水的容器(Medium,贪心(用双指针实现))15. 三数之和(Medium,双指针)42. 接雨水(Hard,贪心(用双指针实现))3. 无重复字符的最长子串(Medium,滑动窗)438. 找到字符串中所有字母异位词(Medium,滑动窗)560. 和为 K 的子数组(Medium,前缀和 + 哈希表的综合应用)239. 滑动窗 阅读详情

相关推荐

Geant4学习——入门(基本概念、Geant4工具包的结构、强制类、可选类)

Geant4是由欧洲核子研究组织基于C++面向对象技术开发的蒙特卡罗应用软件包,用于模拟粒子在物质中输运的物理过程。由于具有良好的通用性和扩展能力,Geant4在涉及微观粒子与物质相互作用的诸多领域获得了广泛应用。 第一部分 Geant4的基本概念 HEP中的模拟是“虚拟现实”。仿真既可用于在研发阶段帮助设计探测器,又可用于物理研究中了解探测器的响应。为了创建这样的虚拟现实,我们需要对粒子间的相互作用,几何形状和材料进行建模,以便将基本粒子传播到检测器中。我们还需要描述检测器生成原始数据的灵敏度。 Gea

M_M-铭的博客 2万+

【Python】回文检测 —— 双端队列的应用

“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。 根据之前所提到的双端队列的特性,我们可以很方便对所输入的数字或者字符串进行检测。只需将放入队列中的字符串从两端同时取出进行比较即可,若相同则继续,反之输出退出。当然,得注意一下字符串位数(或数字位数)的奇偶。 代码如下: from pythonds.basic import Deque def palindrome(char): checker = Deque() for

yewanyuan的博客 766

Dify 从入门到熟悉100 天的学习大纲

理解 Dify 的核心概念,熟悉操作界面,并能创建简单的 AI 应用。祝你在这 100 天的旅程中学有所成,成为一名优秀的 AI 应用开发者!掌握生产环境部署、监控、调优,并关注 Dify 生态和前沿动态。探索多模态、Agent、API 集成、性能优化等高级主题。掌握工作流编排、高级提示词技巧、知识库优化等核心功能。

IT深耕十余载,大道之简 1736

算法11----判断是否为回文词(双端队列判断)

1、题目: 给定一个字符串s,判断其是否回文词 2、思路: 采用双端队列实现,从两边弹出字母,判断是否相同,若相同则继续,直到队列中只剩一个或者没有元素。 3、代码: from collections import deque def palchecker(s): q=deque(s) i=0 while i<len(s)//2: ...

weixin_33967071的博客 388

从CMT2300A实战出发:Sub1G射频匹配电路设计要点与315MHz应用详解

本文从CMT2300A芯片实战出发,详细解析Sub1G射频匹配电路设计要点,特别针对315MHz应用场景。内容涵盖频段划分逻辑、调制方式选择、晶体振荡器设计等基础认知,以及315MHz匹配电路物料选型、巴伦网络处理等实战技巧,并分享PCB布局防干扰设计和实测验证方法,助力开发者优化射频通信性能。

weixin_29238147的博客 165

一、两电平IGBT整流器

电压源换流器(Voltage source converter,VSC)连接交流主网和直流电网,起到交直流网络连接、功率输送和电能变换的作用。采用电压控制手段可维持直流电压的稳定;或采用功率控制手段保证系统功率输出达到预期。VSC的三相电压平衡方程如式(1)所示:式中,igx和ugx分别表示主网三相电流与电压(x=a,b,c);ucx表示换流器VSC 交流输出电压;Rg表示交流主网等效电阻;Lg表示交流主网等效电感。

TUCHACHINA的博客 4165

回文检查器(利用双端队列)

function palindromeChecker(aString){ if(aString === undefined || aString ===null || (aString !==null && aString.length === 0)){ return false } ...

SevenLee的个人博客 246

Win10 Rational Rose 安装教程

在此教程中我们需要四个文件,点此下载[提取码:ig33] 其中第一个为2007的安装包,第二个为破解文件 前言 很多小伙伴反应说会出现几天后就到期的问题,包括我也出现了该问题,如果你已在其他地方安装好了文件且破解成功,且但几天后到期,如果可以使用更改时间的方式打开,那么可以跳过接下来的教程,直接看第三节,我们采用批处理的形式一键完成从修改时间到打开最后改回来的方法解决此问题 一、安装软件 解压缩两个安装包,进入 Rational Rose文件夹 选择setup.exe开始安装 按照图示依次点击

CoderJiang 2万+

C语言数据结构中利用栈和队列实现回文的判断

数据结构中栈有着极为广大的运用,其操作特点是FILO先进后出。队列的特点是FIFO先进先出。判断回文,回文序列很好理解,正反来看它都一样。那我们可以巧妙的利用栈和队列特点来判断回文,存入进抽象结构中,如果输出结果匹配,则为回文。 例如:aabaa为回文序列。进栈顺序为aabaa,其出栈为aabaa。同理队列进队aabaa,出队为aabaa。可以发现,回文前半段在队列中先输出,后半段在栈先输出,则进行匹配,如果相同,则是回文。 这里栈和队列都采用链式结构: typedef char DataTy.

weixin_52309620的博客 8599

MDK5 Debug调试方法总结

MDK5 Debug调试方法总结

m0_70748084的博客 2万+

【23】OpenCV C++实战篇——张正友相机标定【相机标定原理、相机标定流程、标定结果评价、图像畸变矫正】

R是3×3的正交单位矩阵(即旋转矩阵),t为平移向量,R、t与摄像机无关,所以称这两个参数为摄像机的外参数(extrinsicparameter),可以理解为两个坐标原点之间的距离,因其受x,y,z三个方向上的分量共同控制,所以其具有三个自由度。R是3×3的正交单位矩阵(即旋转矩阵),t为平移向量,R、t与摄像机无关,所以称这两个参数为摄像机的外参数(extrinsicparameter),可以理解为两个坐标原点之间的距离,因其受x,y,z三个方向上的分量共同控制,所以其具有三个自由度。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 4479

c语言如何判断字母回文,利用栈和队列判断字符是否是回文(C语言)

// File Name: palindrome.h////Destination:利用栈和队列判断字符串是否是回文//#ifndef PALINDROME#define PALINDROME#include // 链式队列结构的定义typedef char ElemType;typedef struct Node{char data;//元素数据struct Node *next;// 链式...

weixin_35786588的博客 1713

弱网、高热、只有 32MB 内存:恶劣环境下嵌入式 SoC 音视频开发的“不死”法则

永远不要假设。你申请一个 1920 宽的图像,硬件为了对齐(比如 16 字节对齐或 256 字节对齐),实际分配的一行可能有 1936 甚至是 2048 字节。那个多出来的部分叫Padding。如果你写代码时用来计算数据量,或者用Width来做指针偏移:恭喜你,你的画面会像被风吹歪的百叶窗一样,产生斜切畸变。永远使用VB_CONF结构体里返回的u32Stride字段。这是区分新手和老手的试金石。第六章 ISP 调优(Tuning)实战:为什么你调出的画面像个“鬼片”?

大模型大数据攻城狮的专栏 1769

LeetCode讲解算法2-数据结构[栈和队列](Python版)

LeetCode讲解算法2-数据结构[栈和队列](Python版)

总裁余(余登武)博客 1426

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

javascript数据结构——队列

javascript 数据结构 队列

qq_47218954的博客 1518

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

leetcode—11.队列题型python解答

文章目录125. 验证回文串232. 用栈实现队列239. 滑动窗口最大值 125. 验证回文串   这里使用双端队列来解决回文串问题 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 class Solution: def isPalindrome(self, s: str) -> bool: s = s.lower() # 检测字母与数字字符 s = [i

柳杰的博客 491

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

队列及其python实现

文章目录队列(Queue)队列的实现约瑟夫问题双端队列回文词的判定 队列(Queue) 队列(Queue)是一个有次序的数据集合;数据项仅添加到尾rear端,而且仅从首front端移除,Queue具有FIFO的操作次序。 队列支持的操作: 入队(enqueue):增加一个新的元素 出队(dequeue):删除一个元素 peek() :返回队首数据项 isEmpty() : 查看队列是否为空 size():返回队列中数据项的个数 队列的实现 数组(列表)实现: class Queue(object):

suwuzs的博客 4121

125. 验证回文串(字符串双端遍历)

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个。"amanaplanacanalpanama" 是回文串。在移除非字母数字字符之后,s 是一个空字符串 ""。由于空字符串正着反着读都一样,所以是回文串。仅由可打印的 ASCII 字符组成。"raceacar" 不是回文串。字母和数字都属于字母数字字符。

春雨晚来秋的博客 306

验证回文串(aa)

验证回文串(aa)

一路生花 541

Python学习笔记3

Python学习笔记3 文章目录Python学习笔记3回文判断一、双端队列(deque)二、列表反向切片itertools迭代器函数无穷迭代器:itertools.count(start=0, step=1)itertools.cycle(iterable)itertools.repeat(object[, times])根据最短输入序列长度停止的迭代器:itertools.accumulate(iterable[, func, *, initial=None])itertools.chain(*itera

qq_36839976的博客 616

8.<tag-字符串和综合问题补充:lt.71. 简化路径 + lt.6. Z 字形变换 + lt.12. 整数转罗马数字 + lt.680. 验证回文串 II dbc

【代码】8.<tag-字符串和综合问题补充:lt.71. 简化路径 + lt.6. Z 字形变换 + lt.12. 整数转罗马数字 + lt.680. 验证回文串 II dbc。

菜菜的大数据开发の路 534

2024春招冲刺百题计划

给你一个m行n列的矩阵matrix,请按照,返回矩阵中的所有元素。

qq_63600223的博客 1103

Manacher求最长回文子串

按照原始的算法求最大回文字串,我们会将原始串左右两边比较 但是如果原始串的长度是偶数无法比较,比如 abba这里我们应该在哪里放中间点,所以一般会直接处理 处理为 #a#b#b#a#这样 防止出现偶数无法比较的情况,遍历每一个字符 然后左右比较最后得出最长回文字串。 但是时间复杂度太高了,所以我们使用Manacher算法来帮助我们简化流程,首先我们需要了解几个概念,如图: 我们为了得出最大回文半径,Manacher帮助我们如下优化: 1.如果我们当前求的点在最右回文半径的外面,Manacher算法无法优化

m0_49708063的博客 347

Android/Flutter双端算法面试高频考点与实战攻略

算法面试已成为Android和Flutter双端开发者职业进阶的关键环节。从KMP算法的next数组求解到排序算法的复杂度分析,从动态规划的状态转移方程到贪心策略的可行性证明,这些基础概念共同构成了面试考核的核心知识体系。理解数据结构与算法原理不仅能帮助开发者高效解决滑动窗口、LRU缓存淘汰等经典问题,更能在实际工程中优化列表渲染、文本处理等场景。本文基于一线大厂面试真题,结合Kotlin与Dart双语言实践,梳理高频考点与备战策略,助力开发者在算法考察中脱颖而出。

weixin_33904756的博客 625

js实现数据结构

js实现数据结构+力扣真题

qq_73270720的博客 626

<每日一题 / 每日刷题>LeetCode题目汇总Ⅱ

2021-01-01 1.种花问题(每日一题) 在这里插入代码片

lisz的博客 1122
上一篇: 子集,全排列的问题
下一篇: 哈夫曼树的创建及其概念
我先冲了xdm
博客等级 码龄6年 19粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值