当前位置: 首页 > 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 …...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释

以Module Federation 插件详为例&#xff0c;Webpack.config.js它可能的配置和含义如下&#xff1a; 前言 Module Federation 的Webpack.config.js核心配置包括&#xff1a; name filename&#xff08;定义应用标识&#xff09; remotes&#xff08;引用远程模块&#xff0…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)

本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢&#xff0c;连接红外测温传感器&#xff0c;可实时精准捕捉宠物体温变化&#xff0c;以便及时发现健康异常&#xff1b;水位检测传感器时刻监测饮用水余量&#xff0c;防止宠物…...

【iOS】 Block再学习

iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...

Java数组Arrays操作全攻略

Arrays类的概述 Java中的Arrays类位于java.util包中&#xff0c;提供了一系列静态方法用于操作数组&#xff08;如排序、搜索、填充、比较等&#xff09;。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序&#xff08;sort&#xff09; 对数组进行升序…...

前端工具库lodash与lodash-es区别详解

lodash 和 lodash-es 是同一工具库的两个不同版本&#xff0c;核心功能完全一致&#xff0c;主要区别在于模块化格式和优化方式&#xff0c;适合不同的开发环境。以下是详细对比&#xff1a; 1. 模块化格式 lodash 使用 CommonJS 模块格式&#xff08;require/module.exports&a…...