这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned int n;
unsigned long series[100], beck[100];
int j=0, num=0,temp=0,notflin=0;
printf("Please enter the length_of the series :\n");
printf("Please enter the series :\n");
scanf("%u",&n);
for(unsigned int f=0; f<n; f++)
{ series[f]=0;
scanf("%lu",&series[f]);
}
printf("check");
printf("%u",n);
for(unsigned int i=(n-1); i>=0 ; i--)
{
num=0;
num=series[i];
temp=0;
if (num)
{
while((double) num/10!=0)
{
temp*=10;
temp+=(num%10);
num/=10;
}
}
beck[j]=0;
beck[j]=temp;
j++;
}
unsigned int s=0,d=0;
while(1)
{
unsigned long num1=0, number=0;
number=(series[n-1-d]%10);
num1=(beck[n-1-s]%10);
if (number!=num1)
{
notflin=1;
break;
}
series[n-1-d]/=10;
beck[n-1-s]/=10;
if(beck[n-1-s]==0)
s++;
if(series[n-1-d]==0)
d++;
if (d==(n-1)||s==(n-1))
break;
}
printf(notflin==0? "Yes\n":"No\n");
return 0;
}
我尝试输入unsigned long beck[]
的输入,以便最后一个索引中的数字成为unsigned long series[]
中的第一个,然后比较索引中的数字。
当我尝试运行代码时,它会卡住。有什么问题?
答案 0 :(得分:0)
您可以使用以下代码查找数字是否为回文数据。如果数字是回文,则该方法返回0,否则返回-1 -
public int isPalindrome(int number) {
int temp = number;
int reverseNumber = 0;
int rem = 0;
while (temp != 0) {
int rem = temp % 10;
reverseNumber = reverseNumber * 10 + rem;
temp = temp / 10;
}
// if 'number' and reverse of number is equal means
if (number == reverse) {
return 0;
}
return -1;
}
答案 1 :(得分:0)
让我们考虑一个案例:
123321 (输入值)
众所周知,这个数字是回文数据。现在,观察一件事,第一个字符(从左侧)等于第一个字符(从右侧)。类似地,第二个字符(从左侧)等于第二个字符(从右侧)。等等....如果此属性适用于字符串中的每个索引,则该字符串称为回文。
现在,时间来优化它。如果我们在镜子的中间放一面镜子,镜子的左侧将成为右侧的镜像,这给出了想法优化。
现在取两个索引:低和高,其中低指向字符串最左边的字符,高指向字符串的最右侧字符。并做如下:
while(low <= high) {
if(value at low index == value at high index) {
low++;
high--;
} else {
break;
}
}
现在,如果低的值大于高的值,则表示字符串是回文(HOW ???)。仔细想想,并在评论部分告诉我。
您可能会发现此代码段有用:
#include<stdio.h>
#include<string.h>
char str[100005]={0};
int main() {
printf("Enter a number or string to be verified : ");
scanf("%s",str);
int len = strlen(str);
int low = 0;
int high = len -1;
while(low <= high) {
if(str[low] == str[high]) {
low++;
high--;
} else {
break;
}
}
if(low < high) {
printf("No !!! The input string is not palindorme ");
} else {
printf("Indeed !!! String is palindorme ");
}
return 0;
}