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

面试经典150题——验证回文串

面试经典150题 day25

      • 题目来源
      • 我的题解
        • 方法一 双指针
        • 方法二 双指针 空间优化

题目来源

力扣每日一题;题序:125

我的题解

方法一 双指针

首先去除掉字符串中的无用字符,并将英文字符转换为小写,然后使用双指针来判断是否是回文串。

时间复杂度:O(n)
空间复杂度:O(n)

public boolean isPalindrome(String s) {s=trimAndToLower(s);int n=s.length();int left=0,right=n-1;while(left<right){if(s.charAt(left++)!=s.charAt(right--)){return false;}}return true;
}
public String trimAndToLower(String s){StringBuilder sb=new StringBuilder();int n=s.length();for(int i=0;i<n;i++){char ch=s.charAt(i);if((ch>='a'&&ch<='z')||(ch>='0'&&ch<='9')){sb.append(ch);}else if(ch>='A'&&ch<='Z'){sb.append((char)(ch-'A'+'a'));}}return sb.toString();
}
方法二 双指针 空间优化

不再去删除无效字符,并将英文字符转为小写。而是在遍历过程中直接判断。

时间复杂度:O(n)
空间复杂度:O(1)

public boolean isPalindrome(String s) {int n=s.length();int left=0,right=n-1;while(left<right){while(left<right&&!isUsedChar(s.charAt(left))){left++;}while(left<right&&!isUsedChar(s.charAt(right))){right--;}if(toLower(s.charAt(left++))!=toLower(s.charAt(right--))){return false;}}return true;
}
public boolean isUsedChar(char ch){return (ch>='a'&&ch<='z')||(ch>='0'&&ch<='9')||(ch>='A'&&ch<='Z');
}
public char toLower(char ch){if((ch>='a'&&ch<='z')||(ch>='0'&&ch<='9')){return ch;}else{return (char)(ch-'A'+'a');}
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

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

相关文章:

  • YOLOv8的训练、验证、预测及导出[目标检测实践篇]
  • 光伏远动通讯屏的组成
  • 营销H5测试综述
  • 【C++随记4】C++二进制位操作运算符
  • 风电厂数字孪生3D数据可视化交互展示构筑智慧化电厂管理体系
  • 大模型市场爆发式增长,但生成式AI成功的关键是什么?
  • leetcode LCR088.使用最小花费爬楼梯
  • 【DevOps】怎么提升Elasticsearch 的搜索性能
  • 启动任何类型操作系统:不需要检索 ISO 文件 | 开源日报 No.243
  • Linux——综合实验
  • oracle数据库用户名修改
  • 2024年开抖音小店需要多少钱?你真的知道吗?最新入驻条件及费用
  • Vue创建todolist
  • 了解Ansible Playbook
  • nginx 负载均衡、反向代理实验
  • Linux信号捕捉
  • 【Leetcode】 top100 round2 需要加强版
  • ElasticSearch知识点汇总
  • phpize +Visual Studio + MSYS2 + bison 草稿记录并未正常完成
  • 网络安全与IP地址的关联
  • 罗德与施瓦茨 SMC100A信号发生器9kHz至3.2 GHz
  • 新能源汽车充电站智慧充电电能服务综合解决方案
  • pytest(二):关于pytest自动化脚本编写中,初始化方式setup_class与fixture的对比
  • 项目中遇到的问题
  • Deeplab的复现(pytorch实现)
  • input上添加disabled=“true“,点击事件失效处理办法
  • 精酿啤酒的魅力:啤酒的与众不同风味
  • 检测机构的双资质是什么?
  • 基于springboot的校园食堂订餐系统
  • 基于SpringBoot的高校推荐系统