我们需要检查一个号码中个别数字的出现是否相同。为2244(2次出现2次,4次出现2次)。因此,两位数的出现是相同的。检查一个号码中个别数字的出现是否相同
//This will return true if occurrence of individual digit in
//a number is same else false
bool stable(int no)
{
vector<int> v1;
int k , count = 1;
int arr[10];
//Initializing all arr[] -> 0
for(int k = 0 ; k < 10 ;k++)
{
arr[k] = 0;
}
while(no != 0)
{
k=no%10;
arr[k]++;
no=no/10;
}
for(int i = 0 ; i < 10 ; i++)
{
if(arr[i] != 0)
{
v1.push_back(arr[i]); //storing count of individual digits
}
}
vector<int>::iterator it , it2;
for(it = v1.begin()+1 ,it2 = v1.begin(); it != v1.end() ; it++,it2++)
{
if(*it == *it2) //if all the values are same return true else false
{
count++;
}
}
if(count == v1.size()) return true;
return false;
}
但此代码不会因为没有像2222,1111,444工作。另外,你会提出一些优化代码的好方法吗?
因为2222是稳定的(2是唯一出现4的数字),所以你的代码对'2222'返回true,你的代码看起来是正确的。 –
Shubh,你能解释一下代码不适用于这些数字吗?你有没有做过任何调试? – halfer
Thanx @RajeevSingh,其实在我的机器上做这个我已经设置count = 0这是我得到一个错误。 –