算法分析---回文数判断
2017-12-04 13:09
1101 查看
有这样一类数字,他们顺着看和倒着看是相同的数,例如:1111,1221,2332等,这样的数字就称为:回文数字。
回文数的判断有多种算法,直观一点的就是将数字顺序颠倒后再与原数字进行比较,如果相等说明该数字是回文数字,如何颠倒数字的顺序便是难点。
比如一个数12345。
12345 % 10 得到的是个位上的5
12345 / 10 得到1234
1234 % 10 得到十位上的4
1234 / 10 得到123
123 % 10 得到百位上的3
123 / 10 得到12
12 % 10 得到千位上的2
12 / 10 得到1
1 % 10 得到万位上的1
可见通过求余运算来求各个位上的数,通过除法运算来降位(指的是由万位降到千位,千位再降到百位)
现在开始颠倒数字
第一步:
12345 % 10 = 5;求个位上的数
12345 / 10 =1234;降位
第二步:
1234 % 10 = 4;求十位上的数
1234 / 10 = 123; 降位
5 * 10 + 4 = 54;开始颠倒
第三步:
123 % 10 = 3; 求百位上的数
123 / 10 = 12; 降位
54 * 10 + 3 = 543; 继续颠倒
第四步:
12 % 10 = 2; 求千位上的数
12 / 10 = 1; 降位
543 * 10 + 2 = 5432; 继续颠倒
第五步:
1 % 10 = 1; 求万位上的数
1 / 10 = 0; 降位
5432 * 10 + 1 = 54321; 颠倒完毕
#include <stdio.h>
int IsPalindrome(int iNumber);
void main(){
if(IsPalindrome(121)){
printf("是回文数\n");
}
else{
printf("不是回文数\n");
}
}
int IsPalindrome(int iNumber){ //判断是否为回文数的函数
int temp=0;
int number = iNumber;
while(number){ //颠倒数后保存到temp中
temp=temp*10+(number%10);
number=number/10;
}
if(iNumber==temp) //是回文数,返回1
return 1;
else
return 0;
}
回文数的判断有多种算法,直观一点的就是将数字顺序颠倒后再与原数字进行比较,如果相等说明该数字是回文数字,如何颠倒数字的顺序便是难点。
比如一个数12345。
12345 % 10 得到的是个位上的5
12345 / 10 得到1234
1234 % 10 得到十位上的4
1234 / 10 得到123
123 % 10 得到百位上的3
123 / 10 得到12
12 % 10 得到千位上的2
12 / 10 得到1
1 % 10 得到万位上的1
可见通过求余运算来求各个位上的数,通过除法运算来降位(指的是由万位降到千位,千位再降到百位)
现在开始颠倒数字
第一步:
12345 % 10 = 5;求个位上的数
12345 / 10 =1234;降位
第二步:
1234 % 10 = 4;求十位上的数
1234 / 10 = 123; 降位
5 * 10 + 4 = 54;开始颠倒
第三步:
123 % 10 = 3; 求百位上的数
123 / 10 = 12; 降位
54 * 10 + 3 = 543; 继续颠倒
第四步:
12 % 10 = 2; 求千位上的数
12 / 10 = 1; 降位
543 * 10 + 2 = 5432; 继续颠倒
第五步:
1 % 10 = 1; 求万位上的数
1 / 10 = 0; 降位
5432 * 10 + 1 = 54321; 颠倒完毕
#include <stdio.h>
int IsPalindrome(int iNumber);
void main(){
if(IsPalindrome(121)){
printf("是回文数\n");
}
else{
printf("不是回文数\n");
}
}
int IsPalindrome(int iNumber){ //判断是否为回文数的函数
int temp=0;
int number = iNumber;
while(number){ //颠倒数后保存到temp中
temp=temp*10+(number%10);
number=number/10;
}
if(iNumber==temp) //是回文数,返回1
return 1;
else
return 0;
}
相关文章推荐
- 算法分析---回文数判断
- 算法分析---回文数推断
- java经典算法_024一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
- 循环队列队空与队满两个状态的判断算法分析
- 判断鼠标从什么方向进入容器的算法分析
- 深入理解JVM03--判断对象是否存活(引用计数算法、可达性分析算法,最终判定),Eclipse设置GC日志输出,引用
- 关于一个判断Integer数是否为回文数的算法问题
- 对于圆桌理论和经典概率判断算法的分析(转)
- 【算法】回文数的判断--栈的使用
- 经典判断是否为回文数算法
- Java-算法分析及其优劣判断
- Java判断回文数算法简单实现
- [算法设计与分析]3.3.3信息数字化(判断小偷+得奖学生+次品箱+被多个数整除)
- 文本分析--simhash算法进行文本相似度判断
- javaVM 判断对象实例何时回收 用的可达性分析算法,而非引用计数算法
- 一个判断long类型的数是否为回文数算法的C++代码
- 判断对象存活:可达性分析算法
- 【算法】不利用额外空间判断回文数
- Java算法题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
- 算法分析及其优劣判断