| 1 | // anagram_solution3.rs |
| 2 | |
| 3 | fn anagram_solution3(s1: &str, s2: &str) -> bool { |
| 4 | if s1.len() != s2.len() { |
| 5 | return false; |
| 6 | } |
| 7 | |
| 8 | // s1 和 s2 中的字符分别加入 vec_a, vec_b 并排序 |
| 9 | let mut vec_a = Vec::new(); |
| 10 | let mut vec_b = Vec::new(); |
| 11 | for c in s1.chars() { vec_a.push(c); } |
| 12 | for c in s2.chars() { vec_b.push(c); } |
| 13 | vec_a.sort(); |
| 14 | vec_b.sort(); |
| 15 | |
| 16 | // 逐个比较排序的集合,任何字符不匹配就退出循环 |
| 17 | let mut pos: usize = 0; |
| 18 | let mut is_anagram = true; |
| 19 | while pos < vec_a.len() && is_anagram { |
| 20 | if vec_a[pos] == vec_b[pos] { |
| 21 | pos += 1; |
| 22 | } else { |
| 23 | is_anagram = false; |
| 24 | } |
| 25 | } |
| 26 | |
| 27 | is_anagram |
| 28 | } |
| 29 | |
| 30 | fn main() { |
| 31 | let s1 = "rust"; |