Es 01 Anagram
This commit is contained in:
11
Cargo.toml
Normal file
11
Cargo.toml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[package]
|
||||||
|
name = "esercizi"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
rand = "0.8.5"
|
||||||
|
rand_pcg = { version = "0.3.1", features = ["serde1"] }
|
||||||
|
serde = { version = "1.0.197", features = ["derive"] }
|
||||||
19
src/es01_anagram.rs
Normal file
19
src/es01_anagram.rs
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#![allow(dead_code)]
|
||||||
|
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
/** Es.1
|
||||||
|
* Scrivere una funzione che prende in input due riferimenti a stringhe e ritorna
|
||||||
|
* true se le stringhe con anagramma una dell’altra e false altrimenti.
|
||||||
|
*/
|
||||||
|
pub fn anagrammi(str1: &str, str2: &str) -> bool {
|
||||||
|
if str1.len() != str2.len() {
|
||||||
|
false
|
||||||
|
} else {
|
||||||
|
let mut map = HashMap::new();
|
||||||
|
|
||||||
|
str1.chars().for_each(|x| *map.entry(x).or_insert(0) += 1);
|
||||||
|
str2.chars().for_each(|x| *map.entry(x).or_insert(0) -= 1);
|
||||||
|
map.iter().all(|(_, x)| *x == 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
1
src/lib.rs
Normal file
1
src/lib.rs
Normal file
@@ -0,0 +1 @@
|
|||||||
|
pub mod es01_anagram;
|
||||||
24
tests/es01_anagram.rs
Normal file
24
tests/es01_anagram.rs
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
use esercizi::es01_anagram::anagrammi;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_anagrammi() {
|
||||||
|
assert_eq!(anagrammi("ciao", "ciaq"), false);
|
||||||
|
assert_eq!(anagrammi("anna", "nana"), true);
|
||||||
|
assert_eq!(
|
||||||
|
anagrammi(
|
||||||
|
"fhgsdlifgdsiulfsdkjhvldshvlidhfksdhlvuidxhljfkshlkseghlif",
|
||||||
|
"fiisslfhkgjshsiflvdghdughdhddfiflljhksvklxhhusfildkevllds"
|
||||||
|
),
|
||||||
|
true
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
anagrammi(
|
||||||
|
"fhgsdlifgdsiulfsdkjhvldsqsvlidhfksdhlvuidxhljfkshlkseghlif",
|
||||||
|
"fiisslfhkgjshsiflvdghdughdhddfiflljhksvklxhhusfildkevllds"
|
||||||
|
),
|
||||||
|
false
|
||||||
|
);
|
||||||
|
assert_eq!(anagrammi("bububububub", "fsdfgaiholka"), false);
|
||||||
|
assert_eq!(anagrammi("baubau", "baubua"), true);
|
||||||
|
assert_eq!(anagrammi("baubab", "baubb"), false);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user