判断一个链表是否回文 public class Nowcoder { public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public class Partition { public int length(ListNode pHead) {//求链表长度 int len = 0; ListNode c = pHead; while (c != null) { len++; c = c.next; } return len; } public ListNode reverse(ListNode pHead) {//反转链表 ListNode result = null; ListNode c = pHead; while (c != null) { ListNode next = c.next; c.next = result; result = c; c = next; } return result; } public boolean chkPalindrome(ListNode pHead) { int len = length (pHead); int haifLen = len / 2; ListNode middle = pHead; for (int i = 0; i < haifLen; i++) {//让middle先走一半 middle = middle.next; } ListNode r = reverse (middle);//再逆置后一半 ListNode c1 = pHead; ListNode c2 = r; while (c1 != null && c2 != null) { if (c1.val != c2.val) { return false; } c1=c1.next; c1=c2.next; } return true; } } }
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- hzar.cn 版权所有 赣ICP备2024042791号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务