欢迎光临
我们一直在努力

一文读懂:判断链表是否存在环

判断链表是否存在环 给定一个链表,判断链表中是否有环。

思路:定义快慢两个指针,快指针每次走两步,慢指针每次走一步。若链表中存在环,则快指针最终一定会追上慢指针,否则快指针会先到达链表尾部。

代码:

public boolean hasCycle(ListNode head) {
if (head ==null || head.next == null) {
return false;
}
ListNode slow = head, fast = head.next;
while (slow != fast) {
if (fast == null || fast.next == null) {
return false;
}
slow = slow.next;
fast = fast.next.next;
}
return true;
}

求最长回文子串 给定一个字符串,求其中最长的回文子串。

思路:定义两个指针,分别从字符串的左右两端开始向中间移动,并判断当前子串是否为回文串。如果是,则更新最长回文子串的长度和起始位置。

代码:

public String longestPalindrome(String s) {
int maxLen = 0, start = 0;
for (int i = 0; i < s.length(); i++) {
int len1 = expandAroundCenter(s, i, i);
int len2 = expandAroundCenter(s, i, i + 1);
int len = Math.max(len1, len2);
if (len > maxLen) {
maxLen = len;
start = i – (len – 1) / 2;
}
}
return s.substring(start, start + maxLen);
}
private int expandAroundCenter(String s, int left, int right) {
while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
left–;
right++;
}
return right – left – 1;
}

赞(0)
未经允许不得转载:171主机测评 » 一文读懂:判断链表是否存在环
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址