38 重新排列得到2的幂

发布时间:2023年12月18日

问题描述:给定正整数N,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零,最后得到2的幂次方,如果我们可以通过DFS的方式得到上述得到2的幂

//首先定义将数字分解为数字数组
public String parseInt(int Number)
{
String ret="";
int num=Number;
while(num!=0)
{
int figure=num%10;
ret+=figue;
num=num/10;
}
return ret;
}
//定义判断是否为2的幂次方的函数
public Boolean is2n(int number)
{
int numberOne=0;
while(number!=0)
{
if(numberOne>1)
{
return false;
}
if(number&1==1)
{
numberOne+=1;
}
}
return true;
}
//定义将数字字符串转换为整数
public int parseString(String s)
{
int number=0;
for(int i=s.length();i>0;i--)
{
number*=number;
number+=s.charAt(i);
}
return number;
}
//完成DFS判断函数·

public void?dfs2n(String figure,String reUnite,Boolean flag)
{
if(flag){return;}
if(figue.isEmpty())
{
if( is2n(pasString(reUnite)))
{
flag=true;
}
}
for(int i=0;i<figure.length();i++)
{
char chari=figure.charAt(i);
figue=figure.substring(0,i)+figure.substring(i+1);
dfs2n(figure,reUnit+chari,flag);
reUnit=reUnit.subString(0,reUnit.length()-1);
figure=figure.substring(0,i)+chari+figure.substring(i);
}
}

//最后的大函数
public Boolean is2n(int number)
{
String figure=parseInt(number);
String reUnit=new String("");
Boolean flag=false;
dfs2n(figure,reUnit,flag);
return flag;
}

文章来源:https://blog.csdn.net/qq_52299902/article/details/135062674
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。