Re: [閒聊] 聽說這題有87%的人不會解

作者: yam276 ('_')   2025-05-26 18:46:04
一個陣列有一堆兩個字元的東西如ab, ba, cc, dd
你要找出他們可以組合最長的回文子字串
回答最長的回文字串長度
道理我都懂 但我不會寫
只能讓AI教我
:((((
use std::collections::HashMap;
impl Solution {
pub fn longest_palindrome(words: Vec<String>) -> i32 {
let mut freq = HashMap::new();
for word in words {
*freq.entry(word).or_insert(0) += 1;
}
let mut res = 0;
let mut center_used = false;
for (word, &count) in freq.clone().iter() {
let rev: String = word.chars().rev().collect();
if word < &rev && freq.contains_key(&rev) {
let pair_count = count.min(*freq.get(&rev).unwrap());
res += pair_count * 4;
*freq.get_mut(word).unwrap() -= pair_count;
*freq.get_mut(&rev).unwrap() -= pair_count;
}
}
for (word, &count) in freq.iter() {
let rev: String = word.chars().rev().collect();
if word == &rev {
res += (count / 2) * 4;
if count % 2 == 1 && !center_used {
res += 2;
center_used = true;
}
}
}
res
}
}
作者: HGK (HGK)   2025-05-26 18:47:00
現在都交給GPT了
作者: sustainer123 (caster)   2025-05-26 18:48:00
唉 面試又不能chatgpt 不然誰還刷題

Links booklink

Contact Us: admin [ a t ] ucptt.com