a307 - NOIP2011 1.数字反转
題目描述
題目要求將輸入的整數反轉其數字順序,並輸出反轉後的整數。需要注意的是,如果反轉後最高位是 0,則需要移除這些前導零,除非原始數字本身就是 0。如果原始數字是負數,反轉後仍然需要保持負號。
解題思路
此題的解法是將輸入的整數轉換為字串,然後反轉字串。反轉字串後,檢查是否有前導零,如果有,則移除這些前導零。最後,根據原始數字的正負號,輸出反轉後的字串。
複雜度分析
- 時間複雜度: O(n),其中 n 是數字的位數。
- 空間複雜度: O(n),用於儲存反轉後的字串。
程式碼
#include <iostream>
#include <string>
using namespace std;
int main(){
string a;
while(cin >> a){
if(a[0]=='-'){
string b;
for(int i=a.length()-1;i>0;i--)
b+=a[i];
int i;
for(i=0;b[i]=='0';i++){};
cout << "-";
for(;i<b.length();i++)
cout << b[i];
cout << "\n";
}
else{
string b;
for(int i=a.length()-1;i>=0;i--)
b+=a[i];
int i;
for(i=0;b[i]=='0';i++){};
for(;i<b.length();i++)
cout << b[i];
cout << "\n";
}
}
}