居然一直wa,也是醉了,原来把题目中的长度10^5看成是数字在10^5以下,默默地用了int再转化成字符串。。。。结果第10组就悲剧了。。。
题目还是要看清楚的。。。还有就是以为给的数可能是偶数····,结果题目清楚的说了只会是奇数。。。
思路:如果前面有比最后一个小的,让最后一个和最前面的那个偶数交换,如果没有,那么最后一个跟最后面的偶数交换。
#include<cstdio>
#include<cstring>
char s[100010];
int is_even(int a)
{
if((a-'0')%2==0)
return 1;
return 0;
}
int main ()
{
while (scanf("%s",s)==1)
{
int i;
int flag=0;
int n=strlen(s);
for(i=0;i<n;i++)
{
if(is_even(s[i]))
{
flag=1;
break;
}
}
if(!flag)
printf("-1\n");
else{
for(i=0;i<n-1;i++)
{
if(is_even(s[i]) && s[i]-'0'<s[n-1]-'0')
{
int ch;
ch=s[i];
s[i]=s[n-1];
s[n-1]=ch;
break;
}
}
if(i==n-1)
{
for(i=n-2;i>=0;i--)
{
if(is_even(s[i]))
{
int ch;
ch=s[i];
s[i]=s[n-1];
s[n-1]=ch;
break;
}
}
}
printf("%s\n",s);
}
memset(s,'\0',sizeof(s));
}
return 0;
}