【C++】回文数专项练习

如果一个数从左边读和从右边读都是同一个数, 就称为回文数
解答:

思想最简单的方法就是模拟,把各个数位取出来,然后比较。当然这种方法比较麻烦。
我们这次要用的方法如下:既然是回文数,那我们把各个数位上的数 正着 加起来跟 逆着 加起来的 和 是一样的。运用这条性质我们就可以很简单的解决这个问题。代码如下:

#include <iostream>
using namespace std;
 
int main(){
   
 
	int n;
    cin>>n;
    int x = 0;
	int s = n;    // 拷贝一份
	while(s>0){
   
		x = x*10+s%10;    //反向求和,s%10为取s的个位数,例,123取3
		s = s/10;        // 删除s的个位数,例,123变成12
	}
 
	if(x==n){
   
		cout<<"YES!"<<endl;
	}
	else{
   
		cout<<"NO!"<<endl;
	}
		return 0;
}

定义
  记字符串w 的倒置为wR
例如:
(abcd)R=dcba

(abba)R=abba(abba)

对字符串x,如果x 满足 xR=xx
则称之为回文;例如abba是一个回文,而abed不是。

一、判断回文数
法一
思路:
  将原数字倒序,比较是否还和原数相同。

特点:
此方法只适用于判断回文数,不能判断回文字符串。
此方法可以去除回文数可能存在的前导0再进行判断。

#include <iostream>
using namespace std;
int main() {
   
	int n, t, s = 0;
	cin >> n;
	t = n;			//拷贝一份n
	while (t) {
   		//将t倒序存入s中,注意此方法会去除前导0
		s = 10 * s + t % 10;
		t /= 10;
	}
	s == n ? cout << "yes" : cout << "no";
	return 0;
}

法二
思路:
  用字符串读入,双指针判断对称位置字符是否相同。

特点:
此方法适用于判断回文字符串。
此方法不可去除数字可能存在的前导0。

#include <iostream>
using namespace std;
int main() {
   
	s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值