869.重新排序得到2的幂
给定一个正整数 N (1 <= N <= 10^9),按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。
如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。
示例1:
输入:1
输出:true
示例2:
输入:10
输出:false
示例3:
输入:16
输出:true
示例4:
输入:24
输出:false
示例5
输入:46
输出:true
思路:将给定的正整数N十进制表示的字符数组进行从小到大排序,对1~10^9中2的幂十进制表示的字符数组也进行从小到大的排序,比较这两个字符数组是否相等,如果相等,返回true,否则,返回false。
代码:
class Solution {
public boolean reorderedPowerOf2(int n) {
//将n变为从小到大排列
String s = String.valueOf(n);//将n变成字符串
char[] chars = s.toCharArray();//将字符串变成字符数组,提高效率
Arrays.sort(chars);//将字符数组进行排序
//查询
for (int i = 1; i <= 1e9; i*=2) {
char[] temp = String.valueOf(i).toCharArray();//将i变成字符数组
Arrays.sort(temp);//排序
if(Arrays.equals(chars, temp)) return true;//将n与i进行比较
}
return false;
}
}
执行结果:
总结: LeetCode打卡第二天,今天的题与昨天相比还是比较简单,理解起来也比较容易,但因为自己的代码编辑能力不是很好,在敲代码方面还是有很多困难,还需要多加努力!