首页 > 其他分享 >验证回文串

验证回文串

时间:2024-02-03 23:26:17浏览次数:27  
标签:字符 验证 字母 示例 大小写 回文

问题描述:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:
本题中,我们将空字符串定义为有效的回文串。

示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true

示例 2:
输入: "race a car"
输出: false

//算法思路:对撞指针。只不过要注意遇到不是字母或者数字的字符要跳过,字符之间的比较是忽略大小写的
class Solution {
    public boolean isPalindrome(String s) {
        if(s.length()<=0){
            return true;
        }
        char[] arr = s.toCharArray();
        int i = 0;
        int j = arr.length-1;
        while(i<=j){
            // 注意遇到不是字母或者数字的字符要跳过
            if(!(Character.isDigit(arr[i]) || Character.isLetter(arr[i]))){
                i++;
                continue;
            }
            if(!(Character.isDigit(arr[j]) || Character.isLetter(arr[j]))){
                j--;
                continue;
            }
            //判断
            if(isEqualChar(arr[i],arr[j])){
                i++;
                j--;
            }else{
                return false;
            }
        }
        return true;
    }

   //判断这两个字符是否相等(忽略大小写)
    private boolean isEqualChar(char c1,char c2){
        if(c1!=c2){
            if(Character.isLetter(c1) && Character.isLetter(c2) && Math.abs(c1-c2)!=32){
                return false;
            }else if(Character.isLetter(c1) && Character.isDigit(c2)){
                return false;
            }else if(Character.isDigit(c1) && Character.isLetter(c2)){
                return false;
            }else if(Character.isDigit(c1) && Character.isDigit(c2)){
                return false;
            }
        }
        return true;
    }
}
//时间复杂度:O(n)
//空间复杂度:O(1)

参考:

标签:字符,验证,字母,示例,大小写,回文
From: https://www.cnblogs.com/i9code/p/18005394

相关文章

  • 验证回文字符串
    问题描述:给定一个非空字符串s,最多删除一个字符。判断是否能成为回文字符串。示例1:输入:"aba"输出:True示例2:输入:"abca"输出:True解释:你可以删除c字符。注意:字符串只包含从a-z的小写字母。字符串的最大长度是50000。publicbooleanvalidPalindrome(St......
  • 大胆假设小心验证——cf_922_C. XOR-distance
    目录问题概述思路想法参考代码问题反思问题概述给出整数a、b、r,要求输出|(a^x)-(b^x)|的绝对值,其中0<=x<=r(取值都是[0,1e18])思路想法首先是一个位置关系,由于求的是绝对值,所以我们可以假定a>b;第二,我们要做的是异或操作,因此可以将a和b的二进制数写出来,结合异或的特点,可以发......
  • 如何在 JavaScript 中验证 URL
    如何在JavaScript中验证URL统一资源定位符URL(UniformResourceLocator)引导你进入互联网上的一个页面或文件。URL是互联网上事物的地址。所有有效的URL都遵循某些模式。因此,如果你知道这些模式,你就可以在你的程序中确定一个URL是否有效,并给出反馈、抛出一个错误,等等。......
  • file_get_contents 避免出现按个 ssl -60 的报错 ,不进行数据验证 或者 使用php.ini 进
    1,使用不去验证数据$stream_opts=["ssl"=>["verify_peer"=>false,"verify_peer_name"=>false,]];$user_info=json_decode(file_get_contents($user_info_url,false,stream_context_create($stream_opts)));2,配置php.ini......
  • 洛谷题单指南-暴力枚举-P1217 [USACO1.5] 回文质数 Prime Palindromes
    原题链接:https://www.luogu.com.cn/problem/P1217题意解读:本题要找[a,b]范围内的所有回文质数,千万不要被题目提示所干扰,如果按照提示先产生各个长度的回文数,再依次判断是否是素数,程序写起来比较繁琐,需要根据a、b的长度,写8个判断是否产生1~8位回文数,最后做素数判断。换一个思路......
  • 回文树(回文自动机)学习笔记
    用途可以储存所有的回文串,也可用于向末尾插入新节点时动态维护最长回文串。思维过程观察可以发现,如果\(x\simi\)形成回文串,那么\(x+1\simi-1\)必须为回文串。对于任意一个已经确定是回文串的\(x+1\simi-1\)进行单次匹配,只需要比较\(s[x]\)和\(s[i]\)是否相等......
  • 基于FPGA的图像RGB转CMYK实现,包含testbench和MATLAB辅助验证程序
    1.算法运行效果图预览 将仿真结果导入到matlab中,得到如下对比结果: 2.算法运行软件版本matlab2022a,vivado2019.2 3.算法理论概述       基于FPGA的图像RGB转CMYK实现是一种将RGB图像转换为CMYK图像的硬件实现方法。下面将详细介绍其原理和数学公式。 3.1、......
  • 无涯教程-ExpressJS - 身份验证
    为了创建身份验证系统,无涯教程需要创建一个注册页面和一个用户密码存储,以下代码创建了一个帐户并将其存储在内存中,这只是出于演示的目的;建议始终使用永久性存储(数据库或文件)来存储用户信息。varexpress=require('express');varapp=express();varbodyParser=require('body......
  • SQLServer 字符集的学习与验证
    SQLServer字符集的学习与验证背景因为开发JDBCforSQLServer的一群大佬自作主张的进行了AsUnicode的默认参数值设置.导致数据库采用了varchar的列到出现了隐式转换,有非常大的性能损耗.单独改过来又担心出现乱码的问题(毕竟这个比较2的选项就是为了解决乱码问题)没办......
  • Java 系统学习 | Springboot 数据验证
    本篇使用Springboot3框架,IDEA2022编辑器,java17版本。在上一篇的基础上进行优化添加依赖在pom.xml中添加依赖,记得更新maven<!--validation依赖--><dependency><groupId>org.springframework.boot</groupId><artifactI......