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

有效的回文

        常用方法就是双指针。使用两个指针从字符串的两端向中间移动,同时比较对应位置的字符,直到两个指针相遇。由于题目忽略非字母和非数字的字符且忽略大小写,所以跳过那些字符,并将字母转换为小写(或大写)进行比较。

    public boolean isPalindrome(String s){// 初始化两个指针,i指向字符串开头,j指向字符串末尾int i = 0;int j = s.length() - 1;// 使用while循环,当i小于j时进行比较while (i < j){// 获取i位置和j位置的字符char ch1 = s.charAt(i);char ch2 = s.charAt(j);// 如果ch1不是字母或数字,则将i指针向后移动一位if (!Character.isLetterOrDigit(ch1)){i++;}// 如果ch2不是字母或数字,则将j指针向前移动一位else if (!Character.isLetterOrDigit(ch2)) {j--;}// 如果ch1和ch2都是字母或数字else {// 将字符转换为小写,并比较它们是否相等ch1 = Character.toLowerCase(ch1);ch2 = Character.toLowerCase(ch2);// 如果不相等,则字符串不是回文,返回falseif(ch1 != ch2){return false;}// 移动指针继续比较下一对字符i++;j--;}}// 如果循环完成,说明字符串是回文,返回truereturn true;}

        指针移动总次数最多等于字符串的长度,所以时间复杂度是O(n)。

http://www.lryc.cn/news/278397.html

相关文章:

  • Electron快速上手
  • 华为“纯血”鸿蒙加速进场 高校、企业瞄准生态开发新风口
  • 抖音百科怎么创建?头条百科的规则和技巧
  • leetcode10-困于环中的机器人
  • Linux-shell简单学习
  • CMake入门教程【高级篇】qmake转cmake
  • c#图片作为鼠标光标
  • 微信小程序swiper实现层叠轮播图
  • 揭露欧拉骗局第二篇:逼近公式“Σ1/n=lnn+C”。
  • MYSQL的学习——单行函数详解
  • 深度解析Cron表达式:精确控制任务调度的艺术
  • java实现AES256对称加解密工具类
  • 其他排序(基数排序,希尔排序和桶排序)(数据结构课设篇3,python版)(排序综合)
  • 【复现】DiffTalk
  • SQLServer 系统概述
  • Vue3 + TS + Element-Plus —— 项目系统中封装表格+搜索表单 十分钟写五个UI不在是问题
  • Linux系统——测试端口连通性方法
  • Python虚拟环境轻松配置:Jupyter Notebook中的内核管理指南
  • 大数据-hive函数与mysql函数的辨析及练习-将多行聚合成一行
  • 【AI视野·今日NLP 自然语言处理论文速览 第七十三期】Tue, 9 Jan 2024
  • vue知识-03
  • 关于httpClient 使用的注意事项
  • Docker 发布自定义镜像到公共仓库
  • 程序员有哪些接单的渠道?
  • 服务容错-熔断策略之断路器hystrix-go
  • C++进阶(三)多态
  • 大众汽车宣布将ChatGPT,批量集成在多种汽车中!
  • React----函数组件和类组件
  • Kafka集群部署 (KRaft模式集群)
  • Vue 自定义仿word表单录入之日期输入组件