开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第16天,点击查看活动详情
题目描述
给你一个字符串数组 words ,找出并返回数组中的 第一个回文字符串 。如果不存在满足要求的字符串,返回一个 空字符串 "" 。
回文字符串 的定义为:如果一个字符串正着读和反着读一样,那么该字符串就是一个 回文字符串 。
来源:力扣(LeetCode)
- 示例 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]仅由小写英文字母组成
思路分析
根据题意可知,题目给出一个数组字符串words,需要在这个数组字符串里面找到回文型字符串,并将它返回出来;数组里面不一定只有一个回纹型字符串,但是这里只需要找到第一个回纹型字符串就行。啥是回纹型字符串呢,对着字符串正着念或者反着念字母的顺序是一样的,这个就是回纹型字符串。
对于数组,我们再熟悉不过了,一般见到它肯定是需要将它循环取值。所以,循环字符串数组words,取到里面的每一个值。只要将字符串翻转一下再对比是不是一致的,就可以判断是否为回纹型;所以先将字符串转为数组,再根据数组的reverse方法翻转一下,再将翻转后的数组转换为字符串,接着和原本的字符串对比,若是一致就是回纹型了。
AC代码
function solution(words) {
for(let i=0; i<words.length; i++) {
let arr = words[i].split('');
let newStr = arr.reverse().join('');
if(words[i] === newStr) {
console.log(words[i]);
return words[i];
}
console.log(words[i], '11111');
}
};
let words = ["abc","car","ada","racecar","cool"];
solution(words);