# String Manipulation# Basic I/O

a307 - NOIP2011 1.数字反转

🔗 前往 ZeroJudge 原題

題目描述

題目要求將輸入的整數反轉其數字順序,並輸出反轉後的整數。需要注意的是,如果反轉後最高位是 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";
		}
	}
}

Discussion