做公益的网站有哪些,正邦设计怎么样,第三方电子商务平台有哪些优势,临沂手机端建站模板869. 重新排序得到 2 的幂
给定正整数 N #xff0c;我们按任何顺序#xff08;包括原始顺序#xff09;将数字重新排序#xff0c;注意其前导数字不能为零。
如果我们可以通过上述方式得到 2 的幂#xff0c;返回 true#xff1b;否则#xff0c;返回 false。
示例 …869. 重新排序得到 2 的幂
给定正整数 N 我们按任何顺序包括原始顺序将数字重新排序注意其前导数字不能为零。
如果我们可以通过上述方式得到 2 的幂返回 true否则返回 false。
示例 1
输入1 输出true
示例 2
输入10 输出false
示例 3
输入16 输出true
示例 4
输入24 输出false
示例 5
输入46 输出true
解题思路
尝试数字的所有排列方式检查每种排列方式是否能组成2的幂次
代码
class Solution {SetInteger tarnew HashSet();public boolean reorderedPowerOf2(int n) {for (int i0;i31;i){tar.add(1i);}String sn;return dfsReorderedPowerOf2(s,new boolean[s.length()],0,new StringBuilder());}public boolean dfsReorderedPowerOf2(String s,boolean[] m,int cur,StringBuilder sb) {if (curs.length()){if (tar.contains(Integer.parseInt(sb.toString())))return true;return false;}boolean ffalse;for (int i 0; i m.length; i) {if (m[i]||cur0s.charAt(i)0)continue;m[i]true;sb.append(s.charAt(i));f|dfsReorderedPowerOf2(s,m,cur1,sb);sb.deleteCharAt(sb.length()-1);m[i]false;}return f;}
}