Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::collections::HashSet;
- fn remove_duplicate_words(s: &str) -> String {
- let v: Vec<&str> = s.split(" ").collect();
- let mut set = HashSet::new();
- let mut arr = Vec::new();
- let mut res = String::new();
- for i in 0..v.len() {
- if !set.contains(&v[i]) {
- set.insert(&v[i]);
- arr.push(&v[i]);
- }
- }
- for i in 0..arr.len() {
- if i == arr.len() - 1 {
- res.push_str(arr[i]);
- } else {
- res.push_str(&String::from(format!("{} ", arr[i])));
- }
- }
- res
- }
- // Rust test example:
- extern crate rand;
- #[allow(unused_imports)]
- use self::rand::Rng;
- fn solution(s: &str) -> String {
- let v: Vec<&str> = s.split(" ").collect();
- let mut set = HashSet::new();
- let mut arr = Vec::new();
- let mut res = String::new();
- for i in 0..v.len() {
- if !set.contains(&v[i]) {
- set.insert(&v[i]);
- arr.push(&v[i]);
- }
- }
- for i in 0..arr.len() {
- if i == arr.len() - 1 {
- res.push_str(arr[i]);
- } else {
- res.push_str(&String::from(format!("{} ", arr[i])));
- }
- }
- res
- }
- #[test]
- fn sample_test_cases() {
- assert_eq!(remove_duplicate_words("alpha beta beta gamma gamma gamma delta alpha beta beta gamma gamma gamma delta"), "alpha beta gamma delta");
- assert_eq!(remove_duplicate_words("my cat is my cat fat"), "my cat is fat");
- }
- #[test]
- fn random_test_cases() {
- let mut str = ["Bitcoin", "Bitcoin", "LiteCoin", "LiteCoin", "Ripple", "Dash", "Ripple", "Dash", "Lisk", "DarkCoin", "Monero", "Ethereum", "Classic", "Mine", "ProofOfWork", "ProofOfStake", "cat", "cat", "cat", "Steem", "Dogecoin", "Waves", "Factom", "MadeSafeCoin", "BTC", "BTC", "BTC", "BTC"];
- for _ in 0..100 {
- rand::thread_rng().shuffle(&mut str);
- let start = rand::thread_rng().gen_range(0, str.len() - 5);
- let s = &str[start..start + 5];
- let mut r = String::new();
- for i in 0..s.len() {
- if i == s.len() - 1 {
- r.push_str(s[i]);
- } else {
- r.push_str(&String::from(format!("{} ", s[i])));
- }
- }
- assert_eq!(remove_duplicate_words(&r), solution(&r));
- }
- }
Add Comment
Please, Sign In to add comment