Guest User

Untitled

a guest
Jul 17th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. use std::collections::HashSet;
  2.  
  3. fn remove_duplicate_words(s: &str) -> String {
  4. let v: Vec<&str> = s.split(" ").collect();
  5. let mut set = HashSet::new();
  6. let mut arr = Vec::new();
  7. let mut res = String::new();
  8.  
  9. for i in 0..v.len() {
  10. if !set.contains(&v[i]) {
  11. set.insert(&v[i]);
  12. arr.push(&v[i]);
  13. }
  14. }
  15. for i in 0..arr.len() {
  16. if i == arr.len() - 1 {
  17. res.push_str(arr[i]);
  18. } else {
  19. res.push_str(&String::from(format!("{} ", arr[i])));
  20. }
  21. }
  22.  
  23. res
  24. }
  25.  
  26. // Rust test example:
  27. extern crate rand;
  28. #[allow(unused_imports)]
  29. use self::rand::Rng;
  30.  
  31. fn solution(s: &str) -> String {
  32. let v: Vec<&str> = s.split(" ").collect();
  33. let mut set = HashSet::new();
  34. let mut arr = Vec::new();
  35. let mut res = String::new();
  36.  
  37. for i in 0..v.len() {
  38. if !set.contains(&v[i]) {
  39. set.insert(&v[i]);
  40. arr.push(&v[i]);
  41. }
  42. }
  43. for i in 0..arr.len() {
  44. if i == arr.len() - 1 {
  45. res.push_str(arr[i]);
  46. } else {
  47. res.push_str(&String::from(format!("{} ", arr[i])));
  48. }
  49. }
  50.  
  51. res
  52. }
  53.  
  54. #[test]
  55. fn sample_test_cases() {
  56. assert_eq!(remove_duplicate_words("alpha beta beta gamma gamma gamma delta alpha beta beta gamma gamma gamma delta"), "alpha beta gamma delta");
  57. assert_eq!(remove_duplicate_words("my cat is my cat fat"), "my cat is fat");
  58. }
  59.  
  60. #[test]
  61. fn random_test_cases() {
  62. 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"];
  63. for _ in 0..100 {
  64. rand::thread_rng().shuffle(&mut str);
  65. let start = rand::thread_rng().gen_range(0, str.len() - 5);
  66. let s = &str[start..start + 5];
  67. let mut r = String::new();
  68. for i in 0..s.len() {
  69. if i == s.len() - 1 {
  70. r.push_str(s[i]);
  71. } else {
  72. r.push_str(&String::from(format!("{} ", s[i])));
  73. }
  74. }
  75. assert_eq!(remove_duplicate_words(&r), solution(&r));
  76. }
  77. }
Add Comment
Please, Sign In to add comment