菜鸟生成记(38)
P1553 数字反转(升级版)
这一题不难,但是我把它写复杂了;条件一个个加上去的,测试点一个个过的;最后注释都不知道怎么写了;裂开了,就这样吧!
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s="8670%",str,str1;
cin>>s;
if(s.find('.')!=-1)
{
int k=0,x=0;
int len=s.find('.');
int flag=0;
if(s[0]=='0'&&s[1]=='.')
cout<<s[0];
else
for(int i=len-1;i>=0;i--)
{
if(s[i]=='0'&&flag==0)
continue;
if(s[i]!='0')
flag=1;
cout<<s[i];
}
cout<<s[len];
flag=0;
if(s[s.length()-1]=='0'&&s[s.length()-2]=='.')
cout<<s[s.length()-1];
else
{
for(int i=s.length()-1;i>=len+1;i--)
{
if(s[i]=='0'&&flag==0)
continue;
if(s[i]!='0')
flag=1;
str[k++]=s[i];
}
flag=0;
for(int i=k-1;i>=0;i--)
{
if(str[i]=='0'&&flag==0)
continue;
if(str[i]!='0')
flag=1;
str1[x++]=str[i];
}
for(int i=x-1;i>=0;i--)
cout<<str1[i];
}
}
else if((int)s.find('/')!=-1)
{
int k=0,x=0;
int len=s.find('/');
int flag=0;
if(s[0]=='0'&&s[1]=='/')
cout<<s[0];
else
for(int i=len-1;i>=0;i--)
{
if(s[i]=='0'&&flag==0)
continue;
if(s[i]!='0')
flag=1;
cout<<s[i];
}
cout<<s[len];
flag=0;
if(s[s.length()-1]=='0'&&s[s.length()-2]=='/')
cout<<s[s.length()-1];
else
{
for(int i=s.length()-1;i>=len+1;i--)
{
if(s[i]=='0'&&flag==0)
continue;
if(s[i]!='0')
flag=1;
str[k++]=s[i];
}
flag=0;
for(int i=k-1;i>=0;i--)
{
if(str[i]=='0'&&flag==0)
continue;
if(str[i]!='0')
flag=1;
str1[x++]=str[i];
}
for(int i=x-1;i>=0;i--)
cout<<str1[i];
}
}
else if(s.find('%')!=-1)
{
if(s=="0%")
cout<<s;
else
{
int len=s.length();
int flag=0;
for(int i=len-2;i>=0;i--)
{
if(s[i]=='0'&&flag==0)
continue;
if(s[i]!='0')
flag=1;
cout<<s[i];
}
cout<<s[len-1];
}
}
else
{
if(s=="0")
cout<<s;
else
{
int len=s.length();
int flag=0;
for(int i=len-1;i>=0;i--)
{
if(s[i]=='0'&&flag==0)
continue;
if(s[i]!='0')
flag=1;
cout<<s[i];
}
}
}
return 0;
}