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 <= N <= 10^9
Rust Solution
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);
}
Having problems with this solution? Click here to submit an issue on github.