Mündəricat
Problem bəyanat
Bu problemdə bizə Excel vərəqində göründüyü kimi bir sütun adı verilir, aşağıda göstərildiyi kimi Excel-də həmin sütun başlığına uyğun sütun nömrəsini qaytarmalıyıq.
misal
#1
"AB"
28
#2
"ZY"
701
Yanaşma
Müəyyən bir sütun başlığı üçün sütun nömrəsini tapmaq üçün onu düşünə bilərik bir say sistemindən digər say sisteminə çevrilmək.
Onluq sayda olduğu kimi hər hansı bir ədədi ondalık şəkildə göstərmək üçün 0-dan 9-a qədər simvollarımız var. Eyni şəkildə sütun başlığında hər hansı bir ədədi təmsil etmək üçün simvollar A-dan Z-ə qədərdir. Hər yer üçün cəmi 26 simvol var, buna görə bazası 26 olan bir sistemdə bir rəqəm düşünə bilərik.
İndi sual çox sadə olur. Hər hansı bir ikili və ya hexa-onluq ədədi onluğa çevirdiyimiz kimi, bu başlıq sətirini də onluğa çevirməliyik.
Məsələn, “1337” sətrinin ondalık dəyərini tapmaq istəyiriksə, sətri soldan sağa aşağıdakı şəkildə keçərək sayını təkrarən tapa bilərik:
'1' = 1
'13' = (1 x 10) + 3 = 13
'133' = (13 x 10) + 3 = 133
'1337' = (133 x 10) + 7 = 1337
İndi bu problemdə baza-26 say sistemi ilə məşğul oluruq. Eyni fikrə əsaslanaraq, 10-luqları 26-larla əvəz edib əlifbaları rəqəmlərə çevirə bilərik.
“LEET” adı üçün:
L = 12
E = (12 x 26) + 5 = 317
E = (317 x 26) + 5 = 8247
T = (8247 x 26) + 20 = 214442
Həyata keçirilməsi
Excel Cədvəl Sütun Sayı Leetcode Həlli üçün C ++ Proqramı
#include <bits/stdc++.h> using namespace std; int titleToNumber(string s) { int ans=0; for(auto c:s) { ans= ans*26 + (c-'A'+1); } return ans; } int main() { cout<<titleToNumber("AB") <<endl; return 0; }
28
Excel Vərəq Sütun Sayı Leetcode Həlli üçün Java Proqramı
class Rextester{ public static int titleToNumber(String s) { int ans=0; for(char c:s.toCharArray()) { ans= ans*26 + (c-'A'+1); } return ans; } public static void main(String args[]) { System.out.println( titleToNumber("AB") ) ; } }
28
Excel Vərəq Sütun Sayı Leetcode Həlli üçün Mürəkkəblik Analizi
Zamanın mürəkkəbliyi
O (N): N - giriş sətrindəki ümumi simvol sayı. Simvollar boyunca bir dəfə təkrarladıq, beləliklə zamanın mürəkkəbliyi O (N) olacaqdır.
Kosmik Mürəkkəblik
O (1): Nəticəni saxlamaq üçün sadəcə bir tam dəyişən istifadə etdik.