【直播回放】ChatGPT编程刷力扣面试题 02.06. 回文链表

98 阅读1分钟

直播截图

题目描述

编写一个函数,检查输入的链表是否是回文的。

 

示例 1:

输入: 1->2
输出: false 
示例 2:

输入: 1->2->2->1
输出: true

开始解题(JavaScript)

function isPalindrome(head) {
  // 将链表的值复制到数组中
  let vals = [];
  let current = head;
  while (current) {
    vals.push(current.val);
    current = current.next;
  }

  // 使用双指针判断数组是否是回文的
  let left = 0;
  let right = vals.length - 1;
  while (left < right) {
    if (vals[left] !== vals[right]) {
      return false;
    }
    left++;
    right--;
  }

  return true;
}

实际应用

这个函数可以用于判断一个链表是否是回文的。回文链表是指正着读和反着读都相同的链表。这个函数可以在很多实际应用中发挥作用,例如:

判断一个字符串是否是回文的:可以将字符串转换为链表,然后使用这个函数判断链表是否是回文的。

判断一个数字是否是回文的:可以将数字转换为字符串,然后将字符串转换为链表,再使用这个函数判断链表是否是回文的。

数据校验:在某些情况下,我们需要校验输入的数据是否合法,例如密码是否符合规定。可以将输入的数据转换为链表,然后使用这个函数判断链表是否是回文的,如果是回文的则说明输入的数据合法。

总之,这个函数可以在需要判断某个序列是否是回文的场景中使用,无论是字符串、数字还是其他类型的序列都可以通过转换为链表来使用这个函数进行判断。