aboutsummaryrefslogtreecommitdiff
path: root/determine_strings_close.rs
blob: f293b6d1c0bfe0677ddc148c82d4f597bce35dd9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
struct Solution;

impl Solution {
    pub fn close_strings(word1: String, word2: String) -> bool {
        let (mut c1, mut c2) = ([0; 26], [0; 26]);
        for &b in word1.as_bytes() {
            c1[(b - b'a') as usize] += 1;
        }
        for &b in word2.as_bytes() {
            c2[(b - b'a') as usize] += 1;
        }
        if (0..26).any(|i| (c1[i] > 0) != (c2[i] > 0)) {
            return false;
        }
        c1.sort_unstable();
        c2.sort_unstable();
        c1 == c2
    }
}

fn main() {
    let word1 = String::from("abc");
    let word2 = String::from("bca");
    print!("{}", Solution::close_strings(word1, word2));
}