From 7c60dee83b436e8e8a667bf9f191beced8de4fc3 Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Mon, 10 Mar 2025 00:36:13 -0600 Subject: chore: move cpp and rust code to directory --- other/longest_palindrome_concat.rs | 39 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 other/longest_palindrome_concat.rs (limited to 'other/longest_palindrome_concat.rs') 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) -> 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)); +} -- cgit v1.2.3