网站停留时间,网站建设部署视频教程,wordpress 站点主页,青岛正一品网站建设数字反转
445. 数字反转 - AcWing题库
题目大意
输入一个数字#xff0c;输出其各位数字反转的数#xff0c;例如123#xff0c;输出321。-380#xff0c;输出-83。
思路
用字符串存储数据#xff0c;然后单独处理正负数#xff0c;还有末尾0。
#include…数字反转
445. 数字反转 - AcWing题库
题目大意
输入一个数字输出其各位数字反转的数例如123输出321。-380输出-83。
思路
用字符串存储数据然后单独处理正负数还有末尾0。
#includeiostreamusing namespace std;int main(){string s,res;cins;if(s[0] ! -){for(int i s.size() - 1 ; i 0; i --){// //处理反转第一个为0的特殊情况if(!(s[i] 0 res.size() 0)){res s[i];}}}else{cout-;for(int i s.size() - 1 ; i 0; i --){// //处理反转第一个为0的特殊情况if(!(s[i] 0 res.size() 0)){res s[i];}} }coutres;return 0;
}感觉没有错但是当样例为0的时候什么也不输出。也说明了上述代码的逻辑不严谨。
上述代码加个特判当数据为0的时候输出0才算严谨。
可以用c的算法库中的反转reverse(s.begin(),s.end())
更漂亮的写法
#includeiostream
#includealgorithm
using namespace std;
int main()
{string s;cins;if(s[0] -) {cout-;s.erase(s.begin());//删除-号}//反转字符串reverse(s.begin(),s.end());//去除前导0while(s.size() 1 s[0] 0) s.erase(s.begin()); coutsendl;return 0;
}也可以用int类型存对于负数输出符号取相反数即可不用处理前导零。对于正数可以推测公式每次*10即使最高位为00X10也为0。
#includeiostream
using namespace std;
int res;
int main()
{int n;cinn;if(n 0 ){cout-;n -n;}while(n){res res*10 n%10;n / 10;}coutres;return 0;
}