20250222 finished.

This commit is contained in:
jackfiled 2025-02-22 11:40:57 +08:00
parent 0bd38d1fce
commit 5ece9ce221
2 changed files with 52 additions and 0 deletions

View File

@ -498,3 +498,5 @@ mod p624_maximum_distance_in_arrays;
mod p2595_number_of_even_and_odd_bits; mod p2595_number_of_even_and_odd_bits;
mod p2209_minimum_white_tiles_after_covering_with_carpets; mod p2209_minimum_white_tiles_after_covering_with_carpets;
mod p2506_count_pairs_of_similar_strings;

View File

@ -0,0 +1,50 @@
/**
* [2506] Count Pairs Of Similar Strings
*/
pub struct Solution {}
// submission codes start here
use std::collections::HashMap;
impl Solution {
pub fn similar_pairs(words: Vec<String>) -> i32 {
let mut map = HashMap::new();
for word in words.iter() {
let mut bits = 0;
for c in word.chars() {
bits = bits | (1 << (c as u8 - 'a' as u8))
}
let entry = map.entry(bits).or_insert(0);
*entry += 1;
}
let mut result = 0;
for &v in map.values() {
// C(n, 2)
result += v * (v - 1) / 2;
}
result
}
}
// submission codes end
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_2506() {
assert_eq!(
2,
Solution::similar_pairs(vec_string!("aba", "aabb", "abcd", "bac", "aabc"))
);
assert_eq!(3, Solution::similar_pairs(vec_string!("aabb", "ab", "ba")));
assert_eq!(0, Solution::similar_pairs(vec_string!("nba", "cba", "dba")));
}
}