题目:
本题要求实现一个函数,判断任一给定整数N
是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N );
其中N
是用户传入的参数。如果N
满足条件,则该函数必须返回1,否则返回0。
题目分析:
本题要求两个条件:
- 完全平方数
- 至少有两位数字相同,用哈希表的思想,digits[10](每一位的初始值为0)数组保留数字出现的次数。当然也可以通过两次遍历判断。
题目解答:
int IsTheNumber ( const int N ){
int n=N;
int sign=0;
int digits[10]={0};
//判断N是否为完全平方数
int sq=sqrt(n);
if(sq*sq!=n){
return 0;
}
//判断两位数字相同
while(n>0&&sign==0){
if(digits[n%10]++){
sign=1;
}
n/=10;
}
/*
//判断两位数字相同
while(n>0&&sign==0){
int digit=n%10;
int temp=n/10;
while(temp>0&&sign==0){
if(temp%10==digit){
sign=1;
}
temp/=10;
}
n/=10;
}
*/
return sign;
}