当前位置: 首页 > news >正文

leetcode_双指针 125.验证回文串

125.验证回文串

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

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

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

法1: re.sub

  • re.sub() 是 Python re(正则表达式)模块中的一个函数,用于替换字符串中匹配指定正则表达式的部分
  • 基本语法: re.sub(pattern, repl, string, count=0, flags=0), 其中
    • pattern:要匹配的正则表达式(字符串或 re 对象)
    • repl:替换的内容(可以是字符串、函数或 lambda 表达式)
    • string:要操作的原始字符串
    • count(可选):最大替换次数(默认为 0,表示替换所有匹配项)
    • flags(可选):正则标志(如 re.IGNORECASE 忽略大小写)
class Solution(object):def isPalindrome(self, s):""":type s: str:rtype: bool"""s = s.lower()  # 转换为小写s = re.sub(r'[^a-z0-9]', '', s)  # 移除非字母数字字符i = 0j = len(s) - 1while i < j:if s[i] == s[j]:i +=1j -=1else:return Falsereturn True
  • 时间复杂度分析
    s.lower() ——O(n)
    re.sub() ——O(n)
    while 循环 ——O(n/2) = O(n)
    总时间复杂度:O(n)
  • 空间复杂度:O(n)(因 re.sub() 生成了一个新字符串)

法2: 利用isalnum()

  • isalnum() 可用于筛选字母数字字符,在处理字符串时经常用到,例如:

    • 验证用户名或密码格式
    • 清理文本数据
    • 检查输入是否包含非法字符
class Solution(object):def isPalindrome(self, s):""":type s: str:rtype: bool"""s = s.lower()  # 转换为小写s = ''.join(c for c in s if c.isalnum())  # 仅保留字母数字字符return s == s[::-1]  # 反转字符串后对比
  • 时间复杂度分析
    s.lower() ——O(n)
    join() ——O(n)
    isalnum() ——O(n)
    s[::-1] —— O(n)
    总时间复杂度:O(n)
  • 空间复杂度分析
    s.lower():返回一个新的字符串,O(n) 空间
    ‘’.join(c for c in s if c.isalnum()):创建一个新的字符串存储过滤后的字符,O(n) 空间
    s[::-1]:创建一个字符串的反转副本,O(n) 空间
    总空间复杂度:O(n)

相关文章:

leetcode_双指针 125.验证回文串

125.验证回文串 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后&#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s&#xff0c;如果它是回文串 &#xff0c;返回 true &#xff…...

ML.NET库学习001:基于PCA的信用卡异常检查之样本处理与训练

文章目录 (文末提供数据集下载)ML.NET库学习001&#xff1a;基于PCA的信用卡异常检查之样本处理与训练目标项目概述代码结构概述1. **主要类和文件**2. **命名空间和使用指令**3. **数据类 (TransactionObservation)**4. **主程序入口 (Main 方法)**5. **数据预处理 (DataPrepr…...

【华为OD机考】华为OD笔试真题解析(1)--AI处理器组合

一、题目描述 某公司研发了一款高性能AI处理器&#xff0c;每台物理设备具备8颗AI处理器&#xff0c;编号分别为0、1、2、3、4、5、6、7。 编号0~3的处理器处于同一链路中&#xff0c;编号4~7的处理器处于另外一个链路中&#xff0c;不同链路中的处理器不能通信&#xff0c;如…...

edu小程序挖掘严重支付逻辑漏洞

edu小程序挖掘严重支付逻辑漏洞 一、敏感信息泄露 打开购电小程序 这里需要输入姓名和学号&#xff0c;直接搜索引擎搜索即可得到&#xff0c;这就不用多说了&#xff0c;但是这里的手机号可以任意输入&#xff0c;只要用户没有绑定手机号这里我们输入自己的手机号抓包直接进…...

力扣 279. 完全平方数

&#x1f517; https://leetcode.cn/problems/perfect-squares 题目 给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量完全平方数可以拆解为两个相同数的乘积 思路 dp 公式&#xff0c;就是从看用哪个完全平方数 1 2 4 9…… 到当前 sum 的数量最少 代码 …...

鸿蒙生态潮起:开发者的逐浪之旅

鸿蒙生态潮起&#xff1a;开发者的逐浪之旅 在全球科技的澎湃浪潮中&#xff0c;鸿蒙生态宛如一座正在崛起的新大陆&#xff0c;熠熠生辉&#xff0c;吸引着无数开发者扬帆起航&#xff0c;探寻其中蕴藏的无限机遇&#xff0c;也直面诸多挑战。 鸿蒙生态的机遇&#xff0c;首先…...

Diskgenius系统迁移之后无法使用USB启动

前言 本文用于记录系统迁移中遇到的问题及解决方法&#xff0c;如有不对请指出&#xff0c;谢谢&#xff01; 现象 使用DiskGenius进行系统迁移后&#xff0c;使用USB启动失败&#xff0c;反复在品牌logo和黑屏之间切换&#xff0c;期间还会在左上角显示”reset system“报错…...

Kafka 可靠性探究—副本刨析

Kafka 的多副本机制提升了数据容灾能力。 副本通常分为数据副本与服务副本。数据副本是指在不同的节点上持久化同一份数据&#xff1b;服务副本指多个节点提供同样的服务&#xff0c;每个节点都有能力接收来自外部的请求并进行相应的处理。 1 副本刨析 1.1 相关概念 AR&…...

我的博文天地测试报告

我的博文天地测试报告 文章目录 我的博文天地测试报告 一.项目背景 二.项目功能 2.1 功能介绍 三.测试分类 3.1 功能测试 3.1.1 测试用例 3.1.2 实际执行测试的部分操作步骤/结果的截图 3.2 自动化测试 3.3 性能测试 3.1.2 用户登录 jmeter性能测试结果 性能测试遇到的困难 …...

EtherCAT主站IGH-- 35 -- IGH之pdo_list.h/c文件解析

EtherCAT主站IGH-- 35 -- IGH之pdo_list.h/c文件解析 0 预览一 该文件功能`pdo_list.c` 文件功能函数预览二 函数功能介绍`pdo_list.c` 中主要函数的作用1. `ec_pdo_list_init`2. `ec_pdo_list_clear`3. `ec_pdo_list_clear_pdos`4. `ec_pdo_list_total_size`5. `ec_pdo_list_a…...

嵌入式开发神器:Buildroot的介绍和使用方法

目录 引言**Buildroot 能做什么&#xff1f;****1. 生成交叉编译工具链&#xff08;Toolchain&#xff09;****2. 生成嵌入式 Linux 根文件系统&#xff08;RootFS&#xff09;****3. 编译 Linux 内核和设备树文件****4. 编译 Bootloader&#xff08;U-Boot&#xff09;****5. …...

JavaScript系列(61)--边缘计算应用开发详解

JavaScript边缘计算应用开发详解 &#x1f310; 今天&#xff0c;让我们深入探讨JavaScript的边缘计算应用开发。边缘计算是一种将计算和数据存储分布到更靠近数据源的位置的架构模式&#xff0c;它能够提供更低的延迟和更好的实时性能。 边缘计算基础架构 &#x1f31f; &am…...

【LeetCode】day15 142.环形链表II

142. 环形链表 II - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则…...

代理对象与目标对象

1. 定义&#xff1a;代理对象和目标对象 1.1 目标对象&#xff08;Target Object&#xff09; 目标对象是指 被增强的原始对象&#xff0c;即需要通过 AOP 切面&#xff08;Aspect&#xff09;增强功能的业务对象&#xff08;原始类&#xff09;。增强逻辑&#xff08;Advice…...

【Kubernetes Pod间通信-第3篇】Kubernetes中Pod与ClusterIP服务之间的通信

引言 我们之前了解了在不同场景下,Kubernetes中Pod之间的通信是如何路由的。 【Kubernetes Pod间通信-第1篇】在单个子网中使用underlay网络实现Pod到Pod的通信【Kubernetes Pod间通信-第2篇】使用BGP实现Pod到Pod的通信现在,我们来看看在集群中,Pod与服务之间的通信是如何…...

DNN(深度神经网络)近似 Lyapunov 函数

import torch import torch.nn as nn import torch.optim as optim import matplotlib.pyplot as plt # from torchviz import make_dot import torchviz# 1. Lyapunov 函数近似器&#xff08;MLP 结构&#xff09; class LyapunovNet(nn.Module):def __init__(self, input_dim…...

128陷阱

首先我们了解一下关于包装器类型 java是面向对象的语言&#xff0c;但基本类型并不是面向对象的&#xff0c;从而出现了包装器类型&#xff0c;并且包装器添加了更多的属性和方法。如我们在使用集合类型Collection的时候就一定要使用包装类型而非基本类型&#xff0c;它相当于将…...

PromptSource和LangChain哪个更好

目录 1. 设计目标与定位 PromptSource LangChain 2. 功能对比 3. 优缺点分析 PromptSource LangChain 4. 如何选择&#xff1f; 5. 总结 PromptSource 和 LangChain 是两个在自然语言处理&#xff08;NLP&#xff09;领域非常有用的工具&#xff0c;但它们的设计目标和…...

构成正方形的数量:算法深度剖析与实践

目录 引言算法核心概念 定义正方形的构成条件数据结构与输入形式算法数学原理 几何关系的数学表达坐标运算与判定逻辑Python 实现 代码展示代码解析Python 实现的优势与局限C 语言实现 代码展示代码解析C 语言实现的性能特点性能分析与优化 性能分析 时间复杂度空间复杂度优化思…...

Redis持久化-秒杀系统设计

在构建高性能、高可用的系统时&#xff0c;Redis 作为缓存和消息队列的角色越来越重要。在一些场景下&#xff0c;我们还需要将 Redis 的数据进行持久化&#xff0c;以确保数据的安全性和恢复能力。除此之外&#xff0c;秒杀系统也越来越成为电商、抢购等平台的核心功能之一。本…...

从移动平均到IIR滤波:用Matlab filter函数实现数据降噪的完整指南(附对比实验)

从移动平均到IIR滤波&#xff1a;用Matlab filter函数实现数据降噪的完整指南&#xff08;附对比实验&#xff09; 在数据分析与信号处理领域&#xff0c;噪声污染是影响结果准确性的常见挑战。无论是来自传感器的物理干扰&#xff0c;还是数据传输过程中的随机波动&#xff0c…...

Phi-4-mini-reasoning部署案例:科研团队构建内部逻辑验证辅助工具链

Phi-4-mini-reasoning部署案例&#xff1a;科研团队构建内部逻辑验证辅助工具链 1. 项目背景与模型介绍 Phi-4-mini-reasoning 是一款专注于推理任务的文本生成模型&#xff0c;特别适合处理数学题、逻辑题、多步分析和简洁结论输出等场景。与通用聊天模型不同&#xff0c;它…...

iOS 开发进阶,用 SniffMaster 实现 iPhone 抓包深度分析

在 iOS 开发中&#xff0c;抓到请求只是第一步&#xff0c;更实际其实是比如 想确认某个字段到底有没有发出去想复现线上问题想观察 App 在异常网络下的行为 这时候抓包就不只看有没有数据&#xff0c;而是抓出来的数据是否完整、是否可控、是否可复现场景一&#xff1a;接口参…...

OpenClaw自动化流水线:Phi-3-vision处理图片转Excel报表

OpenClaw自动化流水线&#xff1a;Phi-3-vision处理图片转Excel报表 1. 为什么需要自动化报表生成 上周我收到财务同事发来的20张手机拍摄的销售数据表照片&#xff0c;要求整理成统一格式的Excel报表。手动录入数据花了整整3小时&#xff0c;期间还因为看错数字返工两次。这…...

InvokeAI工具函数库:10个核心工具方法与实用辅助函数详解

InvokeAI工具函数库&#xff1a;10个核心工具方法与实用辅助函数详解 【免费下载链接】InvokeAI Invoke is a leading creative engine for Stable Diffusion models, empowering professionals, artists, and enthusiasts to generate and create visual media using the late…...

Qwen3.5-9B开源可部署实践:国产昇腾910B适配方案(CANN+PyTorch NPU移植)

Qwen3.5-9B开源可部署实践&#xff1a;国产昇腾910B适配方案&#xff08;CANNPyTorch NPU移植&#xff09; 1. 项目概述 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型&#xff0c;具备强大的逻辑推理、代码生成和多轮对话能力。该模型特别针对国产昇腾910B处理器进行了优化…...

ESP32/ESP8266轻量级MQTT连接管理库espMqttManager

1. 项目概述espMqttManager是一个面向 ESP32/ESP8266 平台、基于 Arduino 框架的轻量级 MQTT 连接管理库。它并非独立 MQTT 协议栈&#xff0c;而是对espMqttClient&#xff08;由marvinroger 开发的高性能异步 MQTT 客户端&#xff09;进行工程化封装的“胶水层”&#xff0c;…...

公司SEO推广有哪些常见的误区需要避免

公司SEO推广有哪些常见的误区需要避免 在数字化营销的时代&#xff0c;公司SEO推广已经成为提升网站流量和品牌知名度的重要手段。在实际操作中&#xff0c;许多企业在SEO推广过程中常常犯下一些常见的误区&#xff0c;这些误区不仅影响了SEO的效果&#xff0c;还可能导致资源…...

Z-Image-GGUF惊艳效果:运动模糊、景深虚化、镜头畸变等摄影级效果模拟

Z-Image-GGUF惊艳效果&#xff1a;运动模糊、景深虚化、镜头畸变等摄影级效果模拟 1. 项目简介&#xff1a;当AI学会“拍照” 想象一下&#xff0c;你告诉AI&#xff1a;“给我一张黄昏时分&#xff0c;一个女孩在樱花树下奔跑的照片&#xff0c;要有那种风吹过发丝的动感&am…...

《算法竞赛从入门到国奖》算法基础:动态规划-最长子序列

&#x1f4a1;Yupureki:个人主页 ✨个人专栏:《C》 《算法》《Linux系统编程》《高并发内存池》《MySQL数据库》 《个人在线OJ平台》 &#x1f338;Yupureki&#x1f338;的简介: 目录 1. 最长上升子序列 算法原理 代码示例 2. 合唱队形 算法原理 代码示例 3. 最长公共…...