HDU 1266 Reverse Number

来源:互联网 发布:国际淘宝 编辑:程序博客网 时间:2024/04/29 07:34

这道题似曾相识,之前也做过一道类似这种‘阴险’的题目;

回到正题——先给出题目链接 :http://acm.hdu.edu.cn/showproblem.php?pid=1266


我用字符串做了这道题,这道题除了题目要求,主要从几个方面考虑;

Case 1:-1200         这种情况是题目负数和末尾0两种情况的结合,因此需要结合判断,错误输出是 -0021

Case 2:  -0012or 0012这个就是要把前置多余的0去掉 ,正负都要去

Case 3:  00的话可能需要单独判断,也可能不需要……看怎么写吧。



代码很乱还没整理

#include <iostream>//1266 Reverse Number#include <string>using namespace std;void Reverse(string &str){int len=str.length();char tmp;for(int i=0;i<len/2;i++){tmp=str[i];str[i]=str[len-i-1];str[len-i-1]=tmp;}}int main(){int t,zero;string str,res;cin>>t;while(t--){cin>>str;zero=0;if(str.length()==1 && str[0]=='0') {cout<<zero<<endl;continue;}if(str[0]=='-'){str.erase(0,1);while(str[0]=='0' && str.length()!=1) str.erase(0,1);int len=str.length();while( str[--len]=='0' )   { str.erase(len,1);  zero++;  }Reverse(str);cout<<"-"<<str;}else{while(str[0]=='0') str.erase(0,1);int len=str.length();while( str[--len]=='0' )   {  str.erase(len,1);  zero++;  }Reverse(str);cout<<str;for(int i=1;i<=zero;i++)cout<<"0";}cout<<endl;}return 0;}


原创粉丝点击