解题思路:
个人一开始认为解题关键是利用string转变为字符数组,遍历字符数组查看是否0-9各出现一次。
后来去看UP主所写,发现利用Set函数可更方便的解决此问题。Set集合特点是不能有重复的元素在其中,注重独一无二这个性质,若有重复的则会删去,恰好可以利用这一点判断Set集合中是否有10个元素来看是否有0-9十个数字,十分巧妙。
解题代码:
public class cainianling {
public static void main(String[] args) {
int age=10;
for(;;age++){
int a=age*age*age;
int b=age*age*age*age;
String str1=""+a;
String str2=""+b;
String str=str1+str2;
if(str1.length()==4&&str2.length()==6){
char nums[]=str.toCharArray();
int i;
for(i=0;i<=9;i++){//0-9
int j;
char k= (char) ('0'+i);
for(j=0;j<10;j++){//遍历str
if(nums[j]==k){
break;
}
}
if(j==10){
break;
}
}
if(i!=10) {
continue;
}
else {
break;
}
}
}
System.out.println(age);
}
}
public static void main(String[] args) {
for(int age=11;;age++){
String age3=age*age*age+"";
String age4=age*age*age*age+"";
if(age3.length()==4&&age4.length()==6&&CheckTenAge(age3,age4)){
System.out.println(age);
}
}
}
private static boolean CheckTenAge(String age3, String age4) {
String str=age3+age4;
Set<Character> set=new HashSet<Character>();//存储的元素是不可重复的
for(int i=0;i<str.length();i++){
set.add(str.charAt(i));
}
return set.size()==10;
}
}