Solve valid-palindrome.
This commit is contained in:
parent
ea43830954
commit
51fc3a4ffb
|
@ -9,4 +9,5 @@ pub mod reverse_integer;
|
||||||
pub mod roman_to_integer;
|
pub mod roman_to_integer;
|
||||||
pub mod two_sum;
|
pub mod two_sum;
|
||||||
pub mod valid_anagram;
|
pub mod valid_anagram;
|
||||||
|
pub mod valid_palindrome;
|
||||||
pub mod valid_parenthesis;
|
pub mod valid_parenthesis;
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
pub fn is_palindrome(string: String) -> bool {
|
||||||
|
let normalized = string.chars().filter_map(|c| {
|
||||||
|
if char::is_alphanumeric(c) {
|
||||||
|
Some(c.to_ascii_lowercase())
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let regular = normalized.clone().collect::<String>();
|
||||||
|
let reversed = normalized.rev().collect::<String>();
|
||||||
|
|
||||||
|
regular == reversed
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
use leetcode::valid_palindrome::is_palindrome;
|
||||||
|
|
||||||
|
use test_case::test_case;
|
||||||
|
|
||||||
|
#[test_case("A man, a plan, a canal: Panama", true; "valid")]
|
||||||
|
#[test_case("race a car", false; "invalid")]
|
||||||
|
#[test_case("", true; "empty")]
|
||||||
|
#[test_case(" \t", true; "whitespace only")]
|
||||||
|
fn test_valid_palindrome(input: &str, expected: bool) {
|
||||||
|
assert_eq!(is_palindrome(input.to_string()), expected);
|
||||||
|
}
|
Loading…
Reference in New Issue