Given an array of strings words
, return the first palindromic string in the array. If there is no such string, return an empty string ""
.
A string is palindromic if it reads the same forward and backward.
Example 1:
Input: words = ["abc","car","ada","racecar","cool"] Output: "ada" Explanation: The first string that is palindromic is "ada". Note that "racecar" is also palindromic, but it is not the first.
Example 2:
Input: words = ["notapalindrome","racecar"] Output: "racecar" Explanation: The first and only string that is palindromic is "racecar".
Example 3:
Input: words = ["def","ghi"] Output: "" Explanation: There are no palindromic strings, so the empty string is returned.
Constraints:
1 <= words.length <= 100
1 <= words[i].length <= 100
words[i]
consists only of lowercase English letters.
Similar Questions:
// OJ: https://leetcode.com/problems/find-first-palindromic-string-in-the-array/
// Author: github.com/lzl124631x
// Time: O(NW)
// Space: O(W)
class Solution {
public:
string firstPalindrome(vector<string>& A) {
for (auto &s : A) {
string r(rbegin(s), rend(s));
if (r == s) return s;
}
return "";
}
};
// OJ: https://leetcode.com/problems/find-first-palindromic-string-in-the-array/
// Author: github.com/lzl124631x
// Time: O(NW)
// Space: O(1)
class Solution {
bool isPalindrome(string &s) {
int i = 0, j = s.size() - 1;
while (i < j && s[i] == s[j]) ++i, --j;
return i >= j;
}
public:
string firstPalindrome(vector<string>& A) {
for (auto &s : A) {
if (isPalindrome(s)) return s;
}
return "";
}
};