9. 回文数
1.字符串反转比较
-
可以直接将int转换为string,再将string反转后进行比较;
- 转换成string可以使用to_string函数,to_string(int x);
- 反转使用reverse函数,reverse的使用方式是reverse( s.begin(), s.end() );
-
这种做法简单直接,主要是记录两个函数的用法。博主第一次做力扣周赛时,对代码都还很不熟悉,很简单的反转字符串,reverse函数没有正确使用,卡了很久。
-
class Solution { public: bool isPalindrome(int x) { string s1=to_string(x); string s2=s1; reverse(s2.begin(),s2.end()); if(s1==s2) return true; return false; } };
2.数字处理
-
这里是对称性判断,因此只需要对比数字长度一般的次数即可;
-
不断对数字进行”掐头去尾”的操作,对两端的数字进行比较,比到中间的时候,任务结束;
-
掐头去尾的方法:
- divider=10n位数-1,x/divider就是头一个数字’;
- x/10就是尾部一个数字;
- x=(x%divider)/10就同时将头尾去掉,再重复操作。
-
class Solution { public: bool isPalindrome(int x) { if(x<0) return false; int divider=1; int a,b; while(x/divider>=10) divider*=10; while(x>0){ a=x/divider; b=x%10; if(a!=b) return false; x=(x%divider)/10; divider/=100; } return true; } };