【回文串3】LeetCode 125. Valid Palindrome

【LeetCode最详尽解答】125-验证回文串 Valid-Palindrome 欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家!这个问题需要使用一些内置函数,比如 和 。基本要求简单明了。例子:输入: 输出: 解释: 是一个回文。我们可以设置两个指针:一个在输入的开始位置,另一个在末尾位置。左指针始终应小于右指针,因为如果它们在同一位置,我们不需要比较它们。如果左指针大于右指针,这没有意义,并 阅读详情

LeetCode 125. Valid Palindrome

Solution1:我的答案

复杂度为 O(n) O ( n ) ,写法不是很简练啊。

class Solution {
public:
    bool isPalindrome(string s) {
        int n = s.size();
        if (n <= 1) return true;
        //均转换为小写
        transform(s.begin(), s.end(), s.begin(), ::tolower);  
        int i = 0, j = n - 1;
        while (i < j) {
            if (!(s[i] >= 48 && s[i] <= 57 || s[i] >= 97 && s[i] <= 122)) {
                i++;
                continue;
            }
            if (!(s[j] >= 48 && s[j] <= 57 || s[j] >= 97 && s[j] <= 122)) {
                j--;
                continue;
            }
            if (s[i] != s[j]) 
                return false;
            else if (s[i] == s[j]) {
                i++;
                j--;
            }
        }
        return true;
    }
};

tips:
1)用isalnum()函数判断是否是数字或字母会使代码更简洁,关于此类函数的两个链接:
[1]https://blog.youkuaiyun.com/Dawn_sf/article/details/62416188
[2]https://blog.youkuaiyun.com/liuchuo/article/details/54602567
2)对于该问题的扩展,还有利用Manacher算法(马拉车算法)来求解最长回文字符串问题,参考链接:
http://www.cnblogs.com/grandyang/p/4475985.html

C++ string的大小写转换

参考网址:https://www.cnblogs.com/balingybj/p/4678850.html
STL的algorithm库确实给我们提供了这样的便利,使用模板函数transform可以轻松解决这个问题,开发人员只需要提供一个函数对象,例如将char转成大写的toupper函数或者小写的函数tolower函数。
示例代码:
transform原型:

template < class InputIterator, class OutputIterator, class UnaryOperator >  
      OutputIterator transform ( InputIterator first1, InputIterator last1,  
                                 OutputIterator result, UnaryOperator op );  
template < class InputIterator1, class InputIterator2, 
           class OutputIterator, class BinaryOperator >  
      OutputIterator transform ( InputIterator1 first1, InputIterator1 last1,  
                                 InputIterator2 first2, OutputIterator result,  
                                 BinaryOperator binary_op );  

示例代码:

#include <string>  
#include <algorithm>  
using namespace std;  

int main()  
{  
        string strA = "yasaken@126.com";  
        string strB = "LURY@LENOVO.com";  
        printf("Before transform:\n");  
        printf("strA:%s \n", strA.c_str());  
        printf("strB:%s \n\n", strB.c_str());  

        transform(strA.begin(), strA.end(), strA.begin(), ::toupper);//重点  
        transform(strB.begin(), strB.end(), strB.begin(), ::toupper);//重点  
        printf("After transform to toupper:\n");  
        printf("strA:%s \n", strA.c_str());  
        printf("strB:%s \n\n", strB.c_str());  

        transform(strA.begin(), strA.end(), strA.begin(), ::tolower);//重点  
        transform(strB.begin(), strB.end(), strB.begin(), ::tolower);//重点  
        printf("After transform to lower:\n");  
        printf("strA:%s \n", strA.c_str());  
        printf("strB:%s \n\n", strB.c_str());  
        return 0;  
}

运行结果:

strA:yasaken@126.com   
strB:LURY@LENOVO.com   

After transform to toupper:  
strA:YASAKEN@126.COM   
strB:LURY@LENOVO.COM   

After transform to lower:  
strA:yasaken@126.com   
strB:lury@lenovo.com
C#与硬件开发入门:从零开始搭建你的第一个硬件项目 《C#硬件开发入门指南》摘要:本文介绍了使用C#进行硬件开发的基础知识,重点讲解了通过串口通信控制硬件设备的实现方法。内容包括:C#硬件开发优势、必备基础知识、环境准备步骤,并提供了一个完整的串口数据读取示例代码。文章还给出了进阶学习建议和常见问题解决方案,帮助开发者快速掌握C#与硬件设备通信的基本技能,为进一步开发物联网、工业控制等应用打下基础。 阅读详情

相关推荐

基于Android Studio的校园智能点餐系统开发实战(附完整源码与部署指南)

本文详细介绍了基于Android Studio开发校园智能点餐系统的完整流程,包括需求分析、环境搭建、数据库设计、客户端与后台功能实现。系统采用SSM框架和MySQL数据库,解决了校园食堂高峰期排队问题,提供高效的点餐体验。附完整源码与部署指南,助力开发者快速构建类似应用。

weixin_29015801的博客 558

leetcode 125.valid-palindrome 验证回文串 python3

时间:2020-5-17 题目地址:https://leetcode-cn.com/problems/valid-palindrome/description/ 题目难度:Easy 题目描述: 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false

isabloomingtree的博客 246

在已有win10系统下安装Ubuntu,最后出现执行‘grub-install/dev/nvme0n1p5‘失败的致命错误的解决方案

本人电脑型号戴尔灵越,两个SSD512G固态硬盘,c盘为系统盘. Ubuntu版本为20.04LTS,在官网下载https://ubuntu.com/download/desktop/thank-you?version=20.04.3&architecture=amd64 系统盘制作工具为Rufus-3.15http://rufus.ie/zh/ 安装过程网上很多,在这里就不赘述了. 其他安装过程都很顺利,直至安装最后出现这个 本来安装了到最后还以为成了,结果又不行...... 后.

XiaoChen_gugugu的博客 1万+

leetcode 125. 验证回文串(Valid Palindrome) python3 多种思路(re.sub() / 正则表达式 / list(filter(arg1,arg2)))

class Solution: def isPalindrome(self, s): &amp;quot;&amp;quot;&amp;quot; :type s: str :rtype: bool &amp;quot;&amp;quot;&amp;quot; # 思路一: 手写替换的字母,显然很蠢…… # import re

Jasmine_dream 1058

动态欧拉角与静态欧拉角:从理论到实践的深度解析

本文深度解析了动态欧拉角与静态欧拉角的核心区别与应用场景。静态欧拉角基于固定世界坐标系,适用于全局导航与三维场景编辑;而动态欧拉角基于物体自身坐标系,更符合飞行模拟、机器人控制等直觉操作,但需警惕其固有的万向节死锁问题。文章通过理论结合实战,帮助开发者在机器人、无人机及图形学项目中正确选用与处理旋转表示。

java5的博客 1073

飞腾X100芯片GPU状态查询

本文档对在linux系统下查看X100芯片GPU状态信息进行说明,可以帮助大家了解芯片的实时工作状态。

乌拉大喵喵 2813

LeetCode 125. Valid Palindrome 题解

本题是字符串处理的经典问题。双指针技巧字符类型判断大小写处理边界条件处理通过本题可以深入理解双指针在字符串处理中的应用。

cannonjinx的博客 4175

Google Gemini 模型本地可视化

Google近期发布了Gemini模型,而且开放了Gemini Pro API,Gemini Pro 可免费使用!Gemini Pro支持全球180个国家的38种语言,目前接受文本、图片作为输入并生成文本作为输出。Gemini Pro的表现超越了其他同类模型,当前版本配备了 32K 文本上下文窗口,可免费使用,且其定价将十分有竞争力。Gemini Pro具备丰富的功能:函数调用、数据嵌入、语义检索、自定义知识嵌入以及聊天功能。

HJ_blog 1246

LeetCode125—Valid Palindrome

LeetCode125—Valid Palindrome

上善若水 806

HyperLynx(十四)高级分析技术

如果没有查找到该模型,可使用菜单命令“Setup”→“Options”→“Directories”,打开“Set Directories”对话框,单击“Edit”按钮,在“Select Directories for IC-Model Files”对话框中将路径“…在“Assign Models”对话框中的“Port”栏找到“OUTM”端口,在其对应的“Circuit Connection”栏中选择“txout”项。将端口R75连接到“Gnd”。同样,将“EMP”连接到“V”,完成预加重设置。...

小幽余生不加糖 4948

OSG第三方库编译之二十一:minizip编译(Windows、Linux、Macos环境下编译)

OSG编译;第三方库;跨平台编译;minizip编译(Windows、Linux、Macos环境下编译)

LuckyHanMo的博客 2619

Vue Flow 视口函数(Viewport Functions)完全指南:project、fitView、缩放与状态导出

本篇技术指南围绕 Vue Flow 的视口函数(Viewport Functions)展开:从获取视口实例的两种途径(`useVueFlow` 组合式函数与 `onPaneReady` 事件),到 `project`、`fitView`、`fitBounds`、`setViewport`、`zoomIn/zoomOut/zoomTo` 等核心方法,再到 `getElements`、`toObjec

gitblog_00567的博客 669

mjlab & MimicKit 宇树 G1 人形机器人强化学习训练部署

基于mjlab框架训练Unitree G1人形机器人执行双旋踢的示例。参考动作源自Jason Peng的MimicKit项目。数据转换脚本(MimicKit pkl → mjlab csv)完整训练结果与超参数预训练ONNX检查点用于部署实体硬件部署指南⚠️ 免责声明仅用于教育目的。对于因尝试复现此处展示结果而导致的财产损失或人身伤害,我们概不负责。操作硬件时请谨慎行事并保持良好判断力。

2506_90492529的博客 1700

【leetcode】125. 验证回文串( Valid Palindrome )

题目描述 【leetcode】125. 验证回文串( Valid Palindrome ) 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 第一次解答 思路: 获取字符串左右值,若为字母和数字则比较(忽略大小写) 若不是目标字符,继续往中间获取 注意: s.size() == 0 test case: “A m...

Liber-coder的博客 248

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

LeetCode刷题:125. Valid Palindrome

LeetCode刷题:125. Valid Palindrome 原题链接:https://leetcode.com/problems/valid-palindrome/ Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases. N...

梅森上校的博客 业精于勤荒于嬉,形成于思毁于随。 186

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

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

【leetCode】leetCode125 Valid Palindrome

题目如下: Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases. Note: For the purpose of this problem, we define empty string as valid palindrome. ...

随手积累,典型bug解决。技术栈的系统介绍。 196

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ts-fsrs DefaultScheduler 实战:5个常用选项配置你的复习策略

ts-fsrs 是 TypeScript 编写的间隔重复(FSRS)库,其 `DefaultScheduler` 通过 5 个常用选项即可配置你的复习策略:目标保留率、学习步骤、短期学习开关、间隔上限与模糊间隔。 ## 为什么从 DefaultScheduler 开始 `DefaultScheduler` 是一个**异步工厂函数**:`await` 调用后,你得到的是一个装好了 FSRS-7

gitblog_00247的博客 175

【LeetCode】Valid Palindrome(验证回文串)

这道题是LeetCode里的第125道题。 题目描述: 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false 三个步骤: 小...

『诞生之时已至,以此修正万象』 193

【LeetCode】 125. Valid Palindrome 验证回文串(Easy)(JAVA)

【LeetCode】 125. Valid Palindrome 验证回文串(Easy)(JAVA) 题目地址: https://leetcode.com/problems/valid-palindrome/ 题目描述: Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases. Note: For the purpose of this

qq_16927853的博客 173

LeetCode 125. Valid Palindrome

LeetCode 125. Valid Palindrome Description Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring other cases. For example, “A man, a plan, a cana

Vimer.Bai的博客 229

LeetCode--125. Valid Palindrome

题目链接:https://leetcode.com/problems/valid-palindrome/ 这是一道很简单平常的问题,但是非常的恶心,提交了6次才AC,主要是对alphanumeric characters的理解,它的定义参考https://whatis.techtarget.com/definition/alphanumeric-alphameric。知晓了这个定义就十分轻松了,...

To_be_thinking的博客 154

leetcode python3 简单题125. Valid Palindrome

1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第一百二十二题 (1)题目 英文:

从此做一个俗人 291

LeetCode125. Valid Palindrome 验证回文串

题目描述 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: “A man, a plan, a canal: Panama” 输出: true 示例 2: 输入: “race a car” 输出: false 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/p...

it-hao的博客 280

125.Valid Palindrome - 验证回文串

Palindrome: palin-,重,再,-drome,跑,词源同dromedary,hippodrome. n.1.回文(顺读和倒读都一样的词、短语、诗句等,如:radar, rotator) 2.【生物化学】回文节,回文结构;旋转对称 https://leetcode-cn.com/problems/valid-palindrome/ Given a string, determine if it is a palindrome, considering only alphanumer...

Lazyafei's Blog 233

[leetcode]125. Valid Palindrome

[leetcode]125. Valid Palindrome Analysis 周五啦周五啦,网上买的小南瓜到啦—— [六一快乐,嘻嘻~] Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases. Note: Fo...

weixin_32135877的博客 130

LeetCode: 125. Valid Palindrome

LeetCode: 125. Valid Palindrome 题目描述 Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases. For example: &quot;A man, a plan, a canal: Panama&quot; is ...

杨领well的专栏 699
上一篇: 【重点】LeetCode 146. LRU Cache
下一篇: 【回文串14】LeetCode 680. Valid Palindrome II
Allenlzcoder
博客等级 码龄10年 925粉丝 512原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值