当前位置: 首页 > 编程日记 > 正文

LeetCode 125 Valid Palindrome(有效回文)(*)

版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50623165

翻译

给定一个字符串,确定它是否是回文的,仅仅考虑其中的数字和字符并忽略其他。例如,
“A man, a plan, a canal: Panama” 是回文的。
“race a car” 不是回文的批注:
你是否考虑了字符串可能为空?这种面试的时候是一个好问题。对于这问题的意图,我们定义空字符串是回文的。

原文

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.For example,
"A man, a plan, a canal: Panama" is a palindrome.
"race a car" is not a palindrome.Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.For the purpose of this problem, we define empty string as valid palindrome.

分析

题目解出来并不是很难,不过需要细心不过还是会出错。

第一步就是要从原字符串中的干扰去掉,也就是只保留字母,这可以通过ascii来判断。

然后构造出新的字符串,再判断这个新字符串是否是回文的就好了。

然而我也还是错了,首先我没想清楚题目的例子,”aA”也是回文的。

再一次修改之后我还是错了,因为题目的alphanumeric是字母数字均包含了,我一开始翻译的就是字母,后来上文的翻译也修改了。

于是我确定彻底的改革,将功能独立出来,然而代码好长了,但是很清晰:

代码

class Solution {
public:bool isAlpha(char c) {int ascii = (int)c;if ((ascii >= 65 && ascii <= 90) || (ascii >= 97 && ascii <= 122))return true;else return false;}    bool isNumber(char c) {int ascii = (int)c;if (ascii >= 48 && ascii <= 57)return true;else return false;}       bool isAlphaAndNumber(char c1, char c2) {if ((isAlpha(c1) && isNumber(c2)) || (isAlpha(c2) && isNumber(c1)))return true;else return false;}       bool isPalindrome(string s) {if (s.size() == 0) return true;string newStr = "";for (int i = 0; i < s.size(); ++i) {// 只取出其中的字母和数字if (isAlpha(s[i]) || isNumber(s[i]))newStr += s[i];}for (int i = 0; i < newStr.size() / 2; ++i) {// 两者一个是字母、一个是数字if (isAlphaAndNumber(newStr[i], newStr[newStr.size() - i - 1]))return false;// 两者均为数字else if (isNumber(newStr[i]) && isNumber(newStr[newStr.size() - i - 1])) {// 判断是否是同一个数字if (newStr[i] != newStr[newStr.size() - i - 1])return false;}// 两者均为字母else {// 前面判断是否是同一个字母,后面判断是否是互为大小写if (newStr[i] != newStr[newStr.size() - i - 1] && abs((int)newStr[i] - (int)newStr[newStr.size() - i - 1]) != 32)return false;}}return true;}                           
};

进阶

一想到ascii就忘了还有toupper这些函数了,别人写的……

class Solution {
public:bool isPalindrome(string s) {int l = 0, r = s.size() - 1;while(l <= r){while(!isalnum(s[l]) && l < r) l++;while(!isalnum(s[r]) && l < r) r--;if(toupper(s[l]) != toupper(s[r])) return false;l++, r--;}return true;}
};

相关文章:

Ubuntu命令终端查看使用过的命令

使用history命令cyfubuntu:~$ history但是这样会显示出所有使用过的命令&#xff0c;可以在history后加上lesscyfubuntu:~$ history | less会显示出类似vim编辑器的形式&#xff0c;再使用类vim中的操作&#xff0c;查找使用过的命令:/sed //查找使用过的sed相关的命令也可以直…

对象名和函数名同名引起的莫名错误

<html><head><script type"text/javascript">var Validator function(){alert("w")}//第一步校验function validator(){validator new Validator();return true;} function aa(){if(validator()false){alert("FF")}else{al…

【FE前端学习】第二阶段任务-基础

技能学习部分&#xff1a; 1.需要熟练掌握HTML标签以及CSS各个常用属性。 2.掌握CSS3 常用属性 3.掌握jquery的基本用法&#xff0c;对于JS基本逻辑语句需要熟练掌握 上文 【FE前端学习】第二阶段任务-提高 一、HTML标签 HTML是一种标记语言&#xff0c;标记语言是一套标记标签…

LeetCode刷题-6

数组-88. 合并两个有序数组题目描述题目样例Java方法&#xff1a;直接合并后排序思路及算法代码执行结果复杂度Java方法&#xff1a;双指针思路及算法代码执行结果复杂度Java方法&#xff1a;逆向双指针思路及算法代码执行结果复杂度题目描述 给你两个按非递减顺序排列的整数数…

Bootstrap 模态框上下居中

在bootstrap.js里面找到Modal.prototype.adjustDialog在里面添加&#xff1a; // 是弹出框居中。。。var $modal_dialog $(this.$element[0]).find(.modal-dialog);var m_top ($(window).height() - $modal_dialog.height()) / 2;$modal_dialog.css({ margin: m_top px auto…

Oracle自增列创建方法

最近在做Oracle的项目&#xff0c;由于以前没有接触过Oracle的开发&#xff0c;遇到了不少的问题&#xff0c;比如给Oracle表添加自增列&#xff0c;与SQL Server就不同。Oracle没有自增字段这样的功能&#xff0c;但是通过触发器(trigger)和序列(sequence)可以实现。 先建一个…

LeetCode刷题-7

数组-108. 将有序数组转换为二叉搜索树题目描述题目样例前言Java方法&#xff1a;中序遍历&#xff0c;总是选择中间位置左边的数字作为根节点思路及算法代码复杂度Java方法&#xff1a;中序遍历&#xff0c;总是选择中间位置右边的数字作为根节点思路及算法代码复杂度Java方法…

PS 拉伸大长腿

1.打开一个图片工具栏--图像--画布大小 2.选择矩形选框工具--框住要拉升退的位置--然后在按CtrlT&#xff0c;进行拉伸即可 转载于:https://www.cnblogs.com/dengqing9393/p/9481647.html

LeetCode刷题-8

数组-118. 杨辉三角题目描述题目样例Java方法&#xff1a;数学思路及算法代码复杂度题目描述 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 题目样例 示例1&#xff1a; 输入…

php导出excel格式数据

解决2个问题&#xff1a; 1.身份证之类的文本数据自动转为科学计数法的问题。 2.中文乱码的问题 excel从web页面上导出的原理。当我们把这些数据发送到客户端时&#xff0c;我们想让客户端程序&#xff08;浏览器&#xff09;以excel的格式读取 它&#xff0c;所以把mime类型设…

[BZOJ2796][Poi2012]Fibonacci Representation

由于是斐波那契数列&#xff0c;所以$x_ix_j<x_k,i<j<k$ 所以猜测可以贪心选择两边近的数处理。 1 #include<cstdio>2 #include<algorithm>3 #define ll long long4 #define mid (lr>>1)5 using namespace std;6 ll f[505],tot1;7 inline ll findl(…

AppStore审核2.1被拒大礼包过审经历

本团队的iOS端迭代至今&#xff0c;经历过AppStore审核的数次调整&#xff0c;包括审核时长、严厉程度等&#xff0c;尝过各种花式的拒绝理由&#xff0c;但从没有像2018年初这次来得猛烈和漫长。从首次提交到最后过审几乎花费一个月的时间&#xff0c;下面的文字记录了整个过程…

oracle 小数点前零丢失的问题

1.问题起源 oracle 数据库字段值为小于1的小数时&#xff0c;使用char类型处理&#xff0c;会丢失小数点前面的0 例如0.35就变成了.352.解决办法:用to_char函数格式化数字显示 select to_char(0.338,fm9999999990.00) from dual; 结果:0.34 这里重点…

SQLServer查看存储过程的方法

使用 sp_helptext 查看存储过程的定义 在对象资源管理器中&#xff0c;连接到 数据库引擎实例&#xff0c;再展开该实例。在工具栏上&#xff0c;单击“新建查询”。在查询窗口中&#xff0c;输入下列语句。更改数据库名称和存储过程名称以引用所需的数据库和存储过程。USE yca…

数据文件u11

数组-136. 只出现一次的数字题目描述题目样例Java方法&#xff1a;位运算算法思路代码复杂度题目描述 给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 题目样例 示例1&#xff1a; 输入: […

centos7安装配置pgAgent

centos7安装pgagent&#xff1a;默认cmake已经安装编译wxGTKhttps://excellmedia.dl.sourceforge.net/project/wxwindows/2.8.7/wxGTK-2.8.7.tar.gz# yum install gcc gcc-c# tar -zxf wxGTK-2.8.7.tar.gz# cd wxGTK-2.8.7[wxGTK-2.8.7]# vi /etc/profileexport PGHOME/usr/loc…

Oracle-ORA-01722 invalid number错误

本来正常的&#xff0c;经过抓包才知道原来是数字型的无意中多了乱码&#xff01; 本来是3276的居然多了后面一串 3276PuAnrSeU2zliUIV/FHlnX2Xgia1au2xX2vMWtwhttp://www.cnblogs.com/raymond19840709/archive/2008/05/16/1200826.html 1. 代码里面执行了如下SQL语句&#xff…

只读方式VS地址

数组-136. 只出现一次的数字题目描述题目样例Java方法&#xff1a;位运算算法思路代码复杂度题目描述 给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 题目样例 示例1&#xff1a; 输入: […

Nmap (网络映射器)好东西啊

2019独角兽企业重金招聘Python工程师标准>>> Nmap &#xff08;网络映射器&#xff09;是由 Gordon Lyon设计&#xff0c;用来探测计算机网络上的主机和服务的一种安全扫描器。为了绘制网络拓扑图&#xff0c;Nmap的发送特制的数据包到目标主机&#xff0c;然后对返…

【教你赚钱】独立开发者荒野求生之道

本文包括以下内容&#xff1a; 独立开发者面临的现状如何利用一切细节&#xff0c;获取流量注&#xff1a;本文将不涉及代码层面的东西&#xff0c;但是将有可能帮助你&#xff0c;把你写完的代码的价值&#xff0c;放大十倍百倍千倍。 我做了四年独立开发&#xff0c;从一开始…

form表单的reset

form表单的reset重置表单(把表单的所有输入元素重置为它们的默认值。):1.使用reset按钮&#xff0c;条件reset按钮必须在form表单内部。2. <input id"Button1" type"button" value"button" οnclick"form1.reset();" />可以不在…

导航属性(外键)

第一种方法:(不灵活)1.一个学生类型只能保存一个年级对象//一个年级对象能保存多个学生对象//实际开发时单向比较多5.在年级对象类中根据年级编号来查询年级对象//写在if前面代表察回来值即使是空也没问题 因为null6.创建学生编号的时候new 一个 年级对象并且调用年级对象的id将…

23.week4

调通了 剩下的就是核心的部分 转载于:https://www.cnblogs.com/PoeticalJustice/p/9494823.html

“重置”不是“清空”

编程这么多年&#xff0c;一直以为“重置”按钮就是“清空”。 其实&#xff0c;重置是让页面回到初始状态&#xff0c;关键就是如果某个文本框中有值&#xff0c;那么点重置是不能清空的。可以自己做个测试&#xff0c;在一开始就有值的文本框后添加信息&#xff0c;点重置只会…

洒出VS的受调查

数组-136. 只出现一次的数字题目描述题目样例Java方法&#xff1a;位运算算法思路代码复杂度题目描述 给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 题目样例 示例1&#xff1a; 输入: […

SQL 常用方法

SQL 常用方法 EXCEPT &#xff1a;返回两个结果集的差&#xff08;即从左查询中返回右查询没有找到的所有非重复值&#xff09;。 INTERSECT &#xff1a;返回 两个结果集的交集&#xff08;即两个查询都返回的所有非重复值&#xff09;。 UNION &#xff1a;返回两个结果集的并…

【转】Visual Studio团队资源管理器 Git 源码管理工具简单入门

1.1 环境 Visual Studio GitLab (其他版本同理) 1.2 Git操作过程图解 1.3 常见名词解释 拉取&#xff08;Pull&#xff09;&#xff1a;将远程版本库合并到本地版本库&#xff0c;相当于&#xff08;FetchMeger&#xff09; 获取&#xff08;Fetch&#xff09;&#xff1a;从远…

php字符串比较函数

比较两个字符串是否相等&#xff0c;最常见的方法就是使用“”来判断&#xff0c;至于它和“”的区别&#xff0c;简单来说就是前者强调“identical”类型也要求一样&#xff1b;后者要求“equal”&#xff0c;值相同就可以了&#xff0c;参考【1】。或者使用strcmp来判断&…

Debugging Tools for Windows__from WDK7

1、 主要要用到两个工具&#xff1a; (1)、WinDBG 这个主要用于 非IDE下 调试程序/查看信息等 (2)、cdb.exe 这个主要是用在 Qt5.3.2 for VS10 的单步调试器 2、 WDK7 的文件&#xff0c;名为 GRMWDK_EN_7600_1.ISO&#xff0c;该文件我备份于“百度云 CodeSkill --> 全部文…

数据结构:二分查找 java

为什么80%的码农都做不了架构师&#xff1f;>>> 二分查找的前提是有序存储&#xff0c;利用顺序存储和元素排序 /*** 二分查找&#xff0c;查找成功&#xff0c;返回下标记* param values* param begin* param end* param key* param <T>* return*/ public s…