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: trueExample 2:
Input: 10 Output: falseExample 3:
Input: 16 Output: trueExample 4:
Input: 24 Output: falseExample 5:
Input: 46 Output: true
Note:
1 <= N <= 10^9
Approach #1: Math. [Java]
class Solution { public boolean reorderedPowerOf2(int N) { int c = count(N); for (int i = 0; i < 32; ++i) { if (count(1 << i) == c) return true; } return false; } public int count(int x) { int ret = 0; for (; x > 0; x /= 10) ret += (int)Math.pow(10, x % 10); return ret; } }
Analysis:
The way that use / and % to count the digit is awesome.
Reference:
https://leetcode.com/problems/reordered-power-of-2/discuss/149843/C%2B%2BJavaPython-Straight-Forward
原文地址:https://www.cnblogs.com/ruruozhenhao/p/10897015.html
时间: 2024-10-11 12:30:48