leetcode:验证回文串(详解)

news/2024/10/22 14:32:20/

前言:内容包括:题目,代码实现,大致思路

题目:

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

字母和数字都属于字母数字字符。

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。

示例 1:

输入: s = "A man, a plan, a canal: Panama"
输出:true
解释:"amanaplanacanalpanama" 是回文串。
示例 2:

输入:s = "race a car"
输出:false
解释:"raceacar" 不是回文串。
示例 3:

输入:s = " "
输出:true
解释:在移除非字母数字字符之后,s 是一个空字符串 "" 。
由于空字符串正着反着读都一样,所以是回文串。

代码实现:

bool Judge(char ch)//判断一个元素是否为数字字符or字母字符
{if(isdigit(ch) || isalpha(ch)){return true;}else{return false;}
}bool isPalindrome(char * s){int len = strlen(s);int left = 0;int right = len-1;while(left<right){if(Judge(s[left]) && Judge(s[right]))//两个元素都是合法字符{if(isupper(s[left]) || isupper(s[right]))//两个元素中有元素是大写字母{s[left] = tolower(s[left]);//转成小写字母s[right] = tolower(s[right]);}if(s[left]!=s[right])//两个元素不相等{return false;}left++;//指向下一对要比较的元素right--;}else if(!Judge(s[left]))//非法元素{left++;}else if(!Judge(s[right]))//非法元素{right--;}}return true;}

大致思路:

1 定义双指针 left right

left用于遍历字符串的前半部分 right用于遍历字符串的后半部分

2 首先判断left和right指向的两个字符是否是数字字符or字母字符

   若不是,则找出left和right指向的元素中哪个是非法字符,还是都为非法字符:

   若left指向的元素是非法字符,则left++,跳过这个非法字符,指向左半部分下一个要判断的字符

   若right指向的元素是非法字符  则right--,跳过这个非法字符,指向右半部分下一个要判断的字符

   若是合法字符

    a  判断left和right指向的两个字符是否为大写字母字符,若是,则转成小写字母字符

    b   判断这两个元素是否相等,不等则返回false,相等则left++,right--,分别指向下一对要比较的元素

3 当整个循环结束后还没有提前返回,说明此字符串是回文串,返回true


http://www.ppmy.cn/news/39321.html

相关文章

PX4从放弃到精通(二十七):固定翼姿态控制

文章目录前言一、roll/pitch姿态/角速率控制二、偏航角速率控制三、主程序前言 固件版本 PX4 1.13.2 欢迎交流学习&#xff0c;可加左侧名片 一、roll/pitch姿态/角速率控制 roll/pitch的姿态控制类似&#xff0c;这里只介绍roll姿态控制&#xff0c; 代码位置&#xff1a; …

left join 中 的on的使用和on后加where 和 and 的区别

一、left join on on条件是在生成临时表时使用的条件&#xff0c;它不管on中的条件是否为真&#xff0c;都会返回左边表中的记录。 注意&#xff1a;on 后面跟的是关联表的查询条件 二、left join on and &#xff08;1&#xff09;如果and语句是对左表进行过滤的&#xff0c;…

Pandas玩转文本处理

数据处理&#xff0c;也是风控非常重要的一个环节&#xff0c;甚至说是模型成败的关键环节。因此&#xff0c;娴熟简洁的数据处理技巧&#xff0c;是提高建模效率和建模质量的必要能力。 向量化操作的概述 对于文本数据的处理(清洗)&#xff0c;是现实工作中的数据时不可或缺的…

KaiwuDB 成为中国信通院数据库应用创新实验室-汽车行业工作组副组长单位

3月29日&#xff0c;中国通信标准化协会大数据技术标准推进委员会在杭州召开本年度第一次全体工作会议。 KaiwuDB 自成为中国通信标准化协会大数据技术标准推进委员会成员单位并加入大数据技术与产品工作组&#xff08;WG1&#xff09;、数据库与存储工作组&#xff08;WG4&…

[element-ui] el-table行添加阴影悬浮效果

问题: 在el-table每一行获得焦点与鼠标经过时&#xff0c;显示一个整行的阴影悬浮效果 /*其中&#xff0c;table-row-checkd是我自定义的焦点行添加类名&#xff0c;大家可以自己起名*/ .el-table tbody tr:hover,.el-table tbody tr.table-row-checked{box-shadow: 0px 3px …

AI大模型已经出现不可预测的能力

编者按&#xff1a;日前&#xff0c;非盈利组织生命未来研究所发布了一封《暂停大型人工智能研究》的公开信&#xff0c;马斯克等千名科技人士进行了签名。虽然部分签署人的真实性存疑&#xff0c;但是大型语言模型&#xff08;LLMs&#xff09;的“涌现”能力确实可能会导致突…

【MATLAB】matlab遗传算法工具使用

目录 matlab遗传算法工具使用 matlab遗传算法工具使用 % matlab遗传算法工具使用 %学习测试求解 f x*sin(y)y*sin(x) 在x,y属于0-10之间的最大值% ga,gaoptimset为核心函数 %使用工具箱&#xff0c;能够操作的最多的为适应度函数&#xff0c;这也是我们平常能用到的最多的 %…

DFT计算基本要素(2)-截断能、赝势

目录 1截断能 2赝势 3平面波基组&#xff0c;截断能&#xff0c;G展开 1截断能 布洛赫理论告诉我们&#xff1a;对于超晶胞薛定谔方程的解&#xff0c;具有如下形式&#xff0c;即&#xff1a; &#xff08;1&#xff09; 式中&#xff1a;在空间中具有周期&#xff0c;并…