2022.12.06 PM 10:00 by CBJ
來源 : https://zerojudge.tw/ShowProblem?problemid=a038 出題者 : jiangsir 標籤 : (Python)reversed()+str.join()、(C++)reverse()+stringstream、迴圈 難易度 : 2
解題想法 : 。C - 迴圈 跑一個for i,從(字串長-1)走回0,即為反轉,而如何忽略前面多餘的0,我們可以照a034的老套路來實作,詳細可參考a034的題解(https://cbjsprogramdiary.com/2022/12/05/a034-%e4%ba%8c%e9%80%b2%e4%bd%8d%e5%88%b6%e8%bd%89%e6%8f%9b/) 要注意的地方是,正式測資中有一個case是00000...00,這時如果按照a034的做法的話會完全沒有輸出,解決辦法是,因為我們知道一定會有輸出,所以flag無論如何最後應該要變成1(true),因此我們可以在做完for i後另外判斷flag,若為0(false)則直接輸出0。 。C++ - reverse()+stringstream 首先將輸入字串用reverse()直接翻轉,再來將反轉後的字串丟入stringstream,再把stringstream倒進一個整數變數內,即可自動將前面不必要的0給去除。 (stringstream詳細用法&轉整數方法參考 : https://home.gamer.com.tw/creationDetail.php?sn=4114818) 。Python - reversed()+str.join() 首先將輸入字串用reversed()反轉,由於reversed()回傳的是list,因此可以利用''.join(reversed())的方式把reversed()回傳的list轉成str型態,再來即可使用int()把它轉成整數,並自動將前面不必要的0去除。
//C language
#include<stdio.h>
#include<string.h>
int main(){
char s[10];
scanf("%s",s);
int flag=0;
for(int i=strlen(s)-1;i>=0;i--){
if(s[i]!='0') flag=1;
if(flag) printf("%c",s[i]);
}
if(!flag)printf("0");
printf("\n");
return 0;
}

//C++ language
#include<iostream>
#include<string> //string
#include<sstream> //stringstream
#include<algorithm> //reverse()
using namespace std;
int main(){
string s;
cin>>s;
reverse(s.begin(),s.end());
stringstream ss(s);
int ans;
ss>>ans;
cout<<ans<<"\n";
return 0;
}

## Python language
print(int(''.join(reversed(input()))))
