diff options
Diffstat (limited to 'determine_strings_close.rs')
-rw-r--r-- | determine_strings_close.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/determine_strings_close.rs b/determine_strings_close.rs new file mode 100644 index 0000000..f293b6d --- /dev/null +++ b/determine_strings_close.rs @@ -0,0 +1,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)); +} |