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.struct Solution;
impl Solution {
fn first_palindrome(words: Vec<String>) -> String {
let n = words.len();
for i in 0..n {
if Solution::is_palindrom(&words[i]) {
return words[i].to_string();
}
}
"".to_string()
}
fn is_palindrom(s: &str) -> bool {
let rev: String = s.chars().rev().collect();
s == rev
}
}
#[test]
fn test() {
let words = vec_string!["abc", "car", "ada", "racecar", "cool"];
let res = "ada".to_string();
assert_eq!(Solution::first_palindrome(words), res);
let words = vec_string!["notapalindrome", "racecar"];
let res = "racecar".to_string();
assert_eq!(Solution::first_palindrome(words), res);
let words = vec_string!["def", "ghi"];
let res = "".to_string();
assert_eq!(Solution::first_palindrome(words), res);
}