目的
這道題我一開始寫的有些複雜,優化之後簡單了許多。所以想記錄下來。
題目大意:
思路:
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;
}