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

有效回文字符串(Valid palindrome)

题目描述 

 

思路分析

代码实践 

java:

public class Solutation1 {//定义一个方法,判断是否是有效数字或者字母private static boolean isValid(char c) {//如果不是字母或者数字,那就返回一个flase//这里调用了Character类里面的方法return Character.isLetter(c) || Character.isDigit(c);}//判断两个字母是否相等,这里还要忽略大小写private static boolean isEqual(char a,char b) {return Character.toLowerCase(a) == Character.toLowerCase(b);}//主函数public static boolean isPalindrome(String s) {if (s == null) {return false;}int left = 0, right = s.length() - 1;while (left < right) {//非数字左边是++循环while (left < right && !isValid(s.charAt(left))) {left++;} while (left < right && !isValid(s.charAt(right))) {right--;}//上面都跳到正确的位置//开始比较if (left < right && !isEqual(s.charAt(left), s.charAt(right))) {return false;//只要有一个对比不等就不是回文}left++;right--;}//上面如果没有跳到return,直接返回truereturn true;}public static void main(String[] args) {boolean res = isPalindrome("1b , 1");if (res == true) {System.out.println("它是回文串");}}
}

 运行结果:

下面分析一下它的时间复杂度

 

所以时间复杂度是O(n)

下面用c++代码解决:

#include <iostream>
#include <cctype> // 用于字符处理函数using namespace std;bool isValid(char c) {// 如果不是字母或者数字,返回falsereturn isalnum(c);
}bool isEqual(char a, char b) {// 忽略大小写比较两个字符是否相等return tolower(a) == tolower(b);
}bool isPalindrome(string s) {if (s.empty()) {return true; // 空字符串被认为是回文串}int left = 0, right = s.length() - 1;while (left < right) {// 非字母或数字的字符,左指针右移while (left < right && !isValid(s[left])) {left++;}// 非字母或数字的字符,右指针左移while (left < right && !isValid(s[right])) {right--;}// 开始比较字符if (left < right && !isEqual(s[left], s[right])) {return false; // 只要有一个对比不等就不是回文}left++;right--;}return true;
}int main() {bool res = isPalindrome("1b , 1");if (res == true) {printf("it is palindrome\n");} else {printf("it is not palindrome");}return 0;
}

运行结果:

 

上面说几个点:

1.这里引入了c语言当中的一个头文件,去进行字符判断的操作

2.下面这里为什么不进行NULL的判断

正确的方法来检查字符串是否为空。如果你尝试将空指针传递给这个函数,编译器会报错,因为它不接受指针作为参数。所以不需要额外检查指针是否为 NULL 

上面的时间算法复杂度还是O(n)

好了祝早安午安晚安

相关文章:

有效回文字符串(Valid palindrome)

题目描述 思路分析 代码实践 java: public class Solutation1 {//定义一个方法&#xff0c;判断是否是有效数字或者字母private static boolean isValid(char c) {//如果不是字母或者数字&#xff0c;那就返回一个flase//这里调用了Character类里面的方法return Character.i…...

9月9日,每日信息差

今天是2023年9月9日&#xff0c;以下是为您准备的12条信息差 第一、前晨汽车动力电池项目落地厦门&#xff0c;第二十届中国国际投资贸易洽谈会于2023年9月8日在福建省厦门市开幕。会上&#xff0c;前晨汽车科技有限公司与福建省厦门市集美区进行了前晨汽车动力电池项目签约&a…...

Java——》synchronized编译

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…...

vue3使用el-form实现登录、注册功能,且进行表单验证(Element Plus中的el-form)

简介&#xff1a;Element Plus 中的 el-form 是一个表单组件&#xff0c;用于快速构建表单并进行数据校验。它提供了丰富的表单元素和验证规则&#xff0c;使表单开发变得更加简单和高效。可以搭配el-dialog实现当前页面的登录、注册页 &#xff0c;这两天在vue3中用到了表单登…...

12个微服务架构模式最佳实践

微服务架构是一种软件开发技术&#xff0c;它将大型应用程序分解为更小的、可管理的、独立的服务。每个服务负责特定的功能&#xff0c;并通过明确定义的 API 与其他服务进行通信。微服务架构有助于实现软件系统更好的可扩展性、可维护性和灵活性。 接下来&#xff0c;我们将介…...

快速搭建:对象存储平台MinIO

简介&#xff1a;MinIO 是一个高性能的对象存储服务器&#xff0c;兼容Amazon S3云存储服务。适用于大数据存储和用于构建私有云的场景。作为一个对象存储服务&#xff0c;它基于Apache License 开源协议&#xff0c;兼容Amazon S3云存储接口。适合存储非结构化数据&#xff0c…...

Nomad 系列-Nomad+Traefik+Tailscale 集成实现零信任安全

系列文章 Nomad 系列文章Traefik 系列文章Tailscale 系列文章 概述 终于到了令人启动的环节了&#xff1a;NomadTraefikTailscale 集成实现零信任安全。 在这里&#xff1a; Nomad 负责容器调度&#xff1b;&#xff08;容器编排工具&#xff09;Traefik 负责入口流量&…...

(二十一)大数据实战——Flume数据采集之复制和多路复用案例实战

前言 本节内容我们完成Flume数据采集的一个多路复用案例&#xff0c;使用三台服务器&#xff0c;一台服务器负责采集本地日志数据&#xff0c;通过使用Replicating ChannelSelector选择器&#xff0c;将采集到的数据分发到另外俩台服务器&#xff0c;一台服务器将数据存储到hd…...

VM安装RedHat7虚机ens33网络不显示IP问题解决

1、今天在VMware中安装RedHat7.4虚拟机&#xff0c;网络连接使用的是 NAT 连接方式&#xff0c;刚开始安装成功之后输入ifconfig 还能看到ens33自动分配的IP地址&#xff0c;但是当虚机关机重启后&#xff0c;再查看IP发现原来的ens33网络已经没有了&#xff0c;只变成了这两个…...

Leetcode 第 362 场周赛题解

Leetcode 第 362 场周赛题解 Leetcode 第 362 场周赛题解题目1&#xff1a;2848. 与车相交的点思路代码复杂度分析 题目2&#xff1a;2849. 判断能否在给定时间到达单元格思路代码复杂度分析 题目3&#xff1a;2850. 将石头分散到网格图的最少移动次数思路代码复杂度分析 题目4…...

蓝桥杯官网练习题(0的个数)

问题描述 给定一个正整数 n &#xff0c;请问 n 的十进制表示中末尾总共有几个 0 &#xff1f; 输入格式 输入一行包含一个正整数 n。 输出格式 输出一个整数&#xff0c;表示答案。 样例输入 20220000样例输出 4评测用例规模与约定 对于所有评测用例&#xff0c;1 &l…...

计算线段上距离线段外某一点最近的点

一、问题 已知 p 0 = ( x 0 , y 0 ) p_0=(x_0, y_0) p...

港联证券股票分析:经济拐点显现 积极提升仓位

港联证券指出&#xff0c;商场底部上升的方向不变&#xff0c;当时稳增加和活跃资本商场的活跃方针仍在持续落地&#xff0c;一起也看到了一些经济数据边沿企稳的迹象&#xff0c;跟着方针作用的进一步闪现&#xff0c;商场情绪有望持续好转&#xff0c;上市公司基本面也有望得…...

不同的图像质量评价指标(IQA)

一、NR-IQA 这是一种方法不是指标 “Non-Reference Image Quality Assessment”&#xff08;NR-IQA&#xff09;是一种图像质量评价&#xff08;Image Quality Assessment, IQA&#xff09;方法&#xff0c;通常用于评估图像的质量&#xff0c;而无需使用参考图像&#xff08;…...

linux命令-tar 命令

tar 命令 tar 命令一般用来打包文件 ,文件夹 , 方便传输使用. tar命令是在Linux和UNIX系统上用于创建、查看和提取tar归档文件的工具。它通常与gzip一起使用&#xff0c;以便在创建归档文件时进行压缩或解压缩。 -c: 创建归档文件 -x: 提取文件 -z: 告诉 tar 命令使用 gzip …...

selenium元素定位---ElementClickInterceptedException(元素点击交互异常)解决方法

1、异常原因 在编写ui自动化时&#xff0c;执行报错元素无法点击&#xff1a;ElementClickInterceptedException 具体报错&#xff1a;selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <span class"el-c…...

05_css选择器的使用

一、css选择器的类型 1、标签选择器 用法&#xff1a;直接写 写标签名&#xff1a;标签名{} 示例&#xff1a; <!-- <!DOCTYPE html --> <html><head><meta charset"utf-8"><title>标签选择器</title><style type"te…...

跨平台游戏引擎 Axmol-2.0.0 正式发布

下载 https://github.com/axmolengine/axmol/releases/tag/v2.0.0 更新日志 添加实验性的 WebAssembly 构建支持(WebGL 2.0)&#xff0c;由 nowasm 贡献 已知问题 WebGL context lost 尚未处理 部署在 github pages 的 demo 可快速预览&#xff0c;注意&#xff1a;由于 Git…...

面试总结归纳

面试总结 注&#xff1a;循序渐进&#xff0c;由点到面&#xff0c;从技术点的理解到项目中的使用&#xff0c; ​ 要让面试官知道&#xff0c;我所知道的要比面试官更多 一、Mybatis 为ORM半持久层框架&#xff0c;它封装了JDBC&#xff0c;开发时只需要关注sql语句就可以了…...

【刷题篇】贪心算法(一)

文章目录 分割平衡字符串买卖股票的最佳时机Ⅱ跳跃游戏钱币找零 分割平衡字符串 class Solution { public:int balancedStringSplit(string s) {int lens.size();int cnt0;int balance0;for(int i0;i<len;i){if(s[i]R){balance--;}else{balance;}if(balance0){cnt;}}return …...

如何用Electron打造全平台视频播放神器:zyfun跨平台开发实战指南

如何用Electron打造全平台视频播放神器&#xff1a;zyfun跨平台开发实战指南 【免费下载链接】zyfun 跨平台桌面端视频资源播放器,免费高颜值. 项目地址: https://gitcode.com/gh_mirrors/zy/zyfun 在当今多设备、多系统的数字时代&#xff0c;一款真正优秀的视频播放器…...

告别模糊人像:AI驱动的面部增强新方案

告别模糊人像&#xff1a;AI驱动的面部增强新方案 【免费下载链接】DZ-FaceDetailer a node for comfyui for restore/edit/enchance faces utilizing face recognition 项目地址: https://gitcode.com/gh_mirrors/dz/DZ-FaceDetailer 在数字图像处理领域&#xff0c;人…...

XML Notepad:Windows平台XML文档编辑与转换的完整解决方案

XML Notepad&#xff1a;Windows平台XML文档编辑与转换的完整解决方案 【免费下载链接】XmlNotepad XML Notepad provides a simple intuitive User Interface for browsing and editing XML documents. 项目地址: https://gitcode.com/gh_mirrors/xm/XmlNotepad XML No…...

掌握Web AR开发:从痛点到实战的AR.js技术指南

掌握Web AR开发&#xff1a;从痛点到实战的AR.js技术指南 【免费下载链接】AR.js Image tracking, Location Based AR, Marker tracking. All on the Web. 项目地址: https://gitcode.com/gh_mirrors/arj/AR.js Web AR开发痛点与解决方案 开发增强现实应用时&#xff0…...

4个步骤掌握高频交易策略:High-Frequency-Trading-Model-with-IB实战指南

4个步骤掌握高频交易策略&#xff1a;High-Frequency-Trading-Model-with-IB实战指南 【免费下载链接】High-Frequency-Trading-Model-with-IB A high-frequency trading model using Interactive Brokers API with pairs and mean-reversion in Python 项目地址: https://gi…...

避坑指南:如何在torch 2.4.0 + CUDA 12.1环境下成功安装llamafactory及其依赖

深度避坑&#xff1a;PyTorch 2.4.0与CUDA 12.1环境下的Llamafactory全栈部署实战 当开发者尝试在PyTorch 2.4.0和CUDA 12.1环境下部署Llamafactory时&#xff0c;往往会陷入依赖地狱——从Torch版本误装到vllm模块缺失&#xff0c;每个环节都可能成为耗时数小时的深坑。本文将…...

基于 MATLAB 的非线性优化算法实现:BFGS + Armijo 线搜索

基于matlab的非线性优化算法实现 通过梯度下降法&#xff08;具体实现为 BFGS 方法&#xff09;&#xff0c;并结合 Armijo 线搜索方法&#xff0c;对一个多项式目标函数进行优化&#xff0c;找到其最优解。 开发语言&#xff1a;matlab非线性优化问题在科学计算和工程应用中非…...

Mermaid在线编辑器:开源可视化工具的图表创作革命

Mermaid在线编辑器&#xff1a;开源可视化工具的图表创作革命 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-editor …...

SpringBoot+Vue实战:手把手教你搭建社区居民健康档案管理系统(附完整源码)

SpringBootVue实战&#xff1a;从零构建社区居民健康档案管理系统 在数字化转型浪潮下&#xff0c;社区卫生服务正经历着从纸质档案到智能化管理的转变。对于Java开发者而言&#xff0c;这不仅是技术练兵的好机会&#xff0c;更是解决实际社会需求的切入点。本文将带你用Spring…...

nli-distilroberta-base惊艳案例:自动识别合同补充协议与主协议的潜在矛盾条款

nli-distilroberta-base惊艳案例&#xff1a;自动识别合同补充协议与主协议的潜在矛盾条款 1. 项目概述 在合同审查工作中&#xff0c;补充协议与主协议之间的条款一致性检查是法律从业者最头疼的问题之一。传统的人工比对方式不仅耗时费力&#xff0c;还容易遗漏关键矛盾点。…...