<LC刷题二>回文字符串判断之leetcode125&234
其他刷题记录见博客首页
1,leecode125 验证回文串
原题:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
实例:
输入: "A man, a plan, a canal: Panama" 输出: true 输入: "race a car" 输出: false
解决:
定义游标i j,i自左向右移动,j自右向左移动,判断字母数字i j是否相等即可
时间复杂度O(n)
空间复杂度O(1)
class Solution { private boolean isAlphanumeric(char c){ return ((c>='a'&& c<='z')||(c>='A'&&c<='Z')||(c>='0'&&c<='9')); } private boolean isEqualIgnoreCase(char a,char b){ //小写字母a比大写字母A大32 if (a>='A'&& a<='Z') a+=32; if (b>='A'&& b<='Z') b+=32; return a==b; } public boolean isPalindrome(String s){ if (s==null||s.length()==0) return true; int i=0,j=s.length()-1; for (;i<j;++i,--j){ //判断游标i,j是否为字符或数字,charAt(i)取i位置的字符,放在for循环里,把字符串遍历,取每个字符 while (i<j&&!isAlphanumeric(s.charAt(i))) i++; while (i<j&&!isAlphanumeric(s.charAt(j))) j--; //判断每对i,j游标是否相等 if (i<j&&!isEqualIgnoreCase(s.charAt(i),s.charAt(j))){ return false; } } return true; } }
2, leetcode234 回文链表
题目:
请判断一个链表是否为回文链表。
实例:
输入: 1->2 输出: false 输入: 1->2->2->1 输出: true
解决:
定义指向当前节点的cur,和指向前一节点的pre,for循环限定执行1/2 length次,由于cur改变指向后单链表就断了,所以把cur.next下一节点存储起来。
cur指向前一节点pre,pre移到cur位置,cur移到next位置,判断长度是否为奇数,否则cur继续移动一位,pre和cur各自向俩头移动进行比较是否相同
(链表中next为指向下一节点的指针)
class Solution { public boolean isPalindrome(ListNode head) { int len=0;
//反转一半的链表 for (ListNode p=head;p!=null;p=p.next,++len); ListNode cur =head; ListNode pre=null; for (int i=0;i<len/2;i++) { ListNode next = cur.next; cur.next = pre; pre = cur; cur = next; } if (len%2==1) cur=cur.next; for (;pre!=null&&cur!=null;cur=cur.next,pre=pre.next){ if (cur.val!=pre.val){ return false; } }return true; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2017-03-04 redis中的事务