# String# Math# Conversion

f327 - 刪除欄位

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算兩個欄位名稱之間(包含起始和結束欄位)的欄位數量。欄位名稱由大寫字母構成,需要將欄位名稱轉換為數字,然後計算差值。

解題思路

將每個欄位名稱轉換為一個對應的數字。轉換的規則是將 'A' 視為 1,'B' 視為 2,以此類推,'Z' 視為 26。由於欄位名稱可能有多個字母,因此需要將每個字母轉換為數字後,按照 26 進位的方式組合起來。例如,"AA" 轉換為 1 * 26 + 1 = 27,"AB" 轉換為 1 * 26 + 2 = 28。計算出兩個欄位名稱對應的數字後,相減再加上 1,即可得到刪除的欄位數量。

複雜度分析

  • 時間複雜度: O(n),其中 n 是欄位名稱的長度。
  • 空間複雜度: O(1)

程式碼

#include <iostream>
using namespace std;
int main(){
	string a,b;
	int aa=0,bb=0;
	cin >> a >> b;
	for(int i=0;i<a.length();++i){
		aa*=26;
		aa+=a[i]-'A'+1;
	} 
	for(int i=0;i<b.length();++i){
		bb*=26;
		bb+=b[i]-'A'+1;
	} 
	//cout << aa << " " << bb << "\n";
	cout << bb-aa+1;
}

Discussion