【力扣】2108.找出数组中的第一个回文串字符串|每日一题|刷题打卡

60 阅读1分钟

一、题目描述

给你一个字符串数组 words ,找出并返回数组中的 第一个回文字符串 。如果不存在满足要求的字符串,返回一个 空字符串 **"" 。

回文字符串 的定义为:如果一个字符串正着读和反着读一样,那么该字符串就是一个 回文字符串 。

 

示例 1:

输入: words = ["abc","car","ada","racecar","cool"]
输出: "ada"
解释: 第一个回文字符串是 "ada" 。
注意,"racecar" 也是回文字符串,但它不是第一个。

示例 2:

输入: words = ["notapalindrome","racecar"]
输出: "racecar"
解释: 第一个也是唯一一个回文字符串是 "racecar"

示例 3:

输入: words = ["def","ghi"]
输出: ""
解释: 不存在回文字符串,所以返回一个空字符串。

 

提示:

  • 1 <= words.length <= 100
  • 1 <= words[i].length <= 100
  • words[i] 仅由小写英文字母组成

二、思路分析

  1. 写一个判断回文串的方法,利用双指针,判断前面的和后面的字符是否相等,如果相等,则是回文串
  2. 遍历数组的每一项,检测是否是回文串,如果是,返回遇到的第一个字符串,否则返回空串

三、代码答案

/**
 * @param {string[]} words
 * @return {string}
 */
var firstPalindrome = function (words) {
  var isPalindrome = (s) => {
    let left = 0, right = s.length - 1
    while (left < right) {
      if (s[left] !== s[right]) return false
      left++
      right--
    }
    return true
  }
  for (var i = 0; i < words.length; i++) {
    if (isPalindrome(words[i])) {
      console.log(words[i]);
      return words[i]
    }
  }
  return ""
};