一、题目描述
给你一个字符串数组 words ,找出并返回数组中的 第一个回文字符串 。如果不存在满足要求的字符串,返回一个 空字符串 **"" 。
回文字符串 的定义为:如果一个字符串正着读和反着读一样,那么该字符串就是一个 回文字符串 。
示例 1:
输入: words = ["abc","car","ada","racecar","cool"]
输出: "ada"
解释: 第一个回文字符串是 "ada" 。
注意,"racecar" 也是回文字符串,但它不是第一个。
示例 2:
输入: words = ["notapalindrome","racecar"]
输出: "racecar"
解释: 第一个也是唯一一个回文字符串是 "racecar" 。
示例 3:
输入: words = ["def","ghi"]
输出: ""
解释: 不存在回文字符串,所以返回一个空字符串。
提示:
1 <= words.length <= 1001 <= words[i].length <= 100words[i]仅由小写英文字母组成
二、思路分析
- 写一个判断回文串的方法,利用双指针,判断前面的和后面的字符是否相等,如果相等,则是回文串
- 遍历数组的每一项,检测是否是回文串,如果是,返回遇到的第一个字符串,否则返回空串
三、代码答案
/**
* @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 ""
};