Welcome to Subscribe On Youtube
2108. Find First Palindromic String in the Array
Description
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.
Solutions
-
class Solution { public String firstPalindrome(String[] words) { for (var w : words) { boolean ok = true; for (int i = 0, j = w.length() - 1; i < j && ok; ++i, --j) { if (w.charAt(i) != w.charAt(j)) { ok = false; } } if (ok) { return w; } } return ""; } }
-
class Solution { public: string firstPalindrome(vector<string>& words) { for (auto& w : words) { bool ok = true; for (int i = 0, j = w.size() - 1; i < j; ++i, --j) { if (w[i] != w[j]) { ok = false; } } if (ok) { return w; } } return ""; } };
-
class Solution: def firstPalindrome(self, words: List[str]) -> str: return next((w for w in words if w == w[::-1]), "")
-
func firstPalindrome(words []string) string { for _, w := range words { ok := true for i, j := 0, len(w)-1; i < j && ok; i, j = i+1, j-1 { if w[i] != w[j] { ok = false } } if ok { return w } } return "" }
-
function firstPalindrome(words: string[]): string { for (const word of words) { let left = 0; let right = word.length - 1; while (left < right) { if (word[left] !== word[right]) { break; } left++; right--; } if (left >= right) { return word; } } return ''; }
-
impl Solution { pub fn first_palindrome(words: Vec<String>) -> String { for word in words.iter() { let s = word.as_bytes(); let mut left = 0; let mut right = s.len() - 1; while left < right { if s[left] != s[right] { break; } left += 1; right -= 1; } if left >= right { return word.clone(); } } String::new() } }