第一次的思路是遍历一遍字符串数组,
用count判断是否全为数字;
如果遇到分数或小数点,则用x标记,以便划分两部分反转;
如果为百分数,则只用反转百分号前的数字
代码如下:
#include<bits/stdc++.h>
using namespace std;
string s;
int main()
{
int count=0,x=0;
cin>>s;
for(int i=0;i<s.size();i++){
if(s[i]>='0'&&s[i]<='9'){
count++;
}
else
x=i;
}
if(count==s.size()){
for(int i=s.size()-1;i>=0;i--)
cout<<s[i];
cout<<endl;
}
if(x!=0&&x!=s.size()-1){
for(int i=x-1;i>=0;i--){
if(s[i]!='0')
cout<<s[i];
else
continue;
}
cout<<s[x];
for(int j=s.size()-1;j>=x+1;j--){
if(s[j]!='0')
cout<<s[j];
else
continue;
}
cout<<endl;
}
if(x==s.size()-1){
for(int i=x-1;i>=0;i--){
if(s[i]!='0')
cout<<s[i];
else
continue;
}
cout<<s[x]<<endl;
}
return 0;
}
结果WA了,只得40分,实在不明白有哪里有漏洞;mark。