diff options
author | Jack Sangdahl <[email protected]> | 2025-03-10 00:36:13 -0600 |
---|---|---|
committer | Jack Sangdahl <[email protected]> | 2025-03-10 00:36:13 -0600 |
commit | 7c60dee83b436e8e8a667bf9f191beced8de4fc3 (patch) | |
tree | eb7a24ee2067f92245c57bb118e85a1baf15df50 /other/longest_palindrome_concat.rs | |
parent | 5d7cdc215e4ba1ec4cbb24c084cccb5e5e641468 (diff) | |
download | leetcode-7c60dee83b436e8e8a667bf9f191beced8de4fc3.tar.gz leetcode-7c60dee83b436e8e8a667bf9f191beced8de4fc3.zip |
chore: move cpp and rust code to directory
Diffstat (limited to 'other/longest_palindrome_concat.rs')
-rw-r--r-- | other/longest_palindrome_concat.rs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/other/longest_palindrome_concat.rs b/other/longest_palindrome_concat.rs new file mode 100644 index 0000000..2a97ed4 --- /dev/null +++ b/other/longest_palindrome_concat.rs @@ -0,0 +1,39 @@ +struct Solution; + +impl Solution { + pub fn longest_palindrome(words: Vec<String>) -> i32 { + let (mut hist, mut ans, a_code) = (vec![vec![0; 26];26], 0, 'a' as usize); + for w in words.iter() { + if let Some(i) = w.chars().nth(0) { + if let Some(j) = w.chars().nth(1) { + let i = i as usize - a_code; + let j = j as usize - a_code; + match hist[j][i] { + cnt if cnt > 0 => { + ans += 4; + hist[j][i] -= 1; + }, + _ => { + hist[i][j] += 1; + } + } + } + } + } + for i in 0..26 { + match hist[i][i] { + cnt if cnt > 0 => { + ans += 2; + break; + }, + _ => (), + } + } + ans + } +} + +fn main() { + let words = vec!["lc".to_string(), "cl".to_string(), "gg".to_string()]; + print!("{}", Solution::longest_palindrome(words)); +} |