目的
这道题我一开始写的有些复杂,优化之后简单了许多。所以想记录下来。
题目大意:
思路:
1:因为这个数字后面的0,翻转过来不输出,所以开始我想的是再用一个变量sum来同步后面的0,只要后面相邻是0,变量sum就减一,直到遇到不是零的数,sum就不用再减了,然后输出,下次循环的时候sum与i不同步,所以就不断输出,具体看代码。缺点太复杂。
代码:
# include <stdio.h>
# include <string.h>
int main(void)
{
char str[30];
scanf("%s",str);
if(str[0]=='-')
{
char s = str[0];
printf("%c",s);
int sum = strlen(str)-1;
for(int i = strlen(str)-1; i>=1; i--)
{
if(str[i] == '0' && sum == i)
{
sum-=1;
continue;
}
printf("%c",str[i]);
}
}
else
{
int sum = strlen(str)-1;
for(int i = strlen(str)-1; i>=0; i--)
{
if(str[i] == '0' && sum == i)
{
sum-=1;
continue;//这个很重要
}
printf("%c",str[i]);
}
}
return 0;
}
2.后来看了另一个方法,它是用一个while循环来处理具体看代码。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
cin >> str;
if (str[0] == '-') cout << '-';
int i = str.length() - 1;
while (str[i] == '0')//在这里排除了后面有0的情况
--i;
for ( ; i >= 0; --i)
if (str[i] != '-')
cout << str[i];
return 0;
}