869. Reordered Power of 2

Starting with a positive integer `N`, we reorder the digits in any order (including the original order) such that the leading digit is not zero.

Return `true` if and only if we can do this in a way such that the resulting number is a power of 2.

Example 1:

```Input: 1
Output: true
```

Example 2:

```Input: 10
Output: false
```

Example 3:

```Input: 16
Output: true
```

Example 4:

```Input: 24
Output: false
```

Example 5:

```Input: 46
Output: true
```

Note:

1. `1 <= N <= 10^9`

869. Reordered Power of 2
``````struct Solution;
use std::collections::HashSet;

impl Solution {
fn reordered_power_of2(n: i32) -> bool {
let mut hs: HashSet<Vec<char>> = HashSet::new();
for i in 0..32 {
let mut v: Vec<char> = (1 << i).to_string().chars().collect();
v.sort_unstable();
hs.insert(v);
}
let mut v: Vec<char> = n.to_string().chars().collect();
v.sort_unstable();
hs.contains(&v)
}
}

#[test]
fn test() {
let n = 1;
let res = true;
assert_eq!(Solution::reordered_power_of2(n), res);
let n = 10;
let res = false;
assert_eq!(Solution::reordered_power_of2(n), res);
let n = 16;
let res = true;
assert_eq!(Solution::reordered_power_of2(n), res);
let n = 24;
let res = false;
assert_eq!(Solution::reordered_power_of2(n), res);
let n = 46;
let res = true;
assert_eq!(Solution::reordered_power_of2(n), res);
}
``````