Excel Sheet Column Number Leetcode Solution


Რთული ტური Easy
ხშირად ეკითხებიან microsoft
მათემატიკის პუნქტების სისტემა

პრობლემის განცხადება

ამ პრობლემის დროს ჩვენ გვეძლევა სვეტის სათაური, როგორც ეს ჩანს Excel ფორმატში, ჩვენ უნდა დავაბრუნოთ სვეტის ნომერი, რომელიც შეესაბამება ამ სვეტის სათაურს Excel– ში, როგორც ნაჩვენებია ქვემოთ.

Excel Sheet Column Number Leetcode Solution

მაგალითი

#1

"AB"
28

#2

"ZY"
701

მიდგომა

კონკრეტული სვეტის სათაურის სვეტის მოსაძებნად შეგვიძლია ვიფიქროთ მასზე ერთი რიცხვითი სისტემიდან სხვა რიცხვითი სისტემის გარდაქმნა.
ათობითი რიცხვის მსგავსად, ჩვენ გვაქვს 0 – დან 9 – მდე სიმბოლოები, რომლითაც ნებისმიერი რიცხვი წარმოადგენს ათობითი. ანალოგიურად სვეტის სათაურში სიმბოლოები A- დან Z- მდე წარმოადგენს ნებისმიერ რიცხვს. თითოეული ადგილისთვის სულ 26 სიმბოლოა, ამიტომ შეგვიძლია ვიფიქროთ რიცხვზე სისტემაში, რომლის ფუძეა 26.

ახლა კითხვა ძალიან მარტივია. როგორც ნებისმიერი ორობითი ან hexa- ათობითი რიცხვი გარდაქმნის მის ათობითი ფორმაში, ამ სათაურის სტრიქონი უნდა გადავაქციოთ ათობითი რიცხვად.

მაგალითად, თუ გვსურს ვიპოვოთ ”1337” სტრიქონის ათობითი მნიშვნელობა, შეგვიძლია განმეორებით ვიპოვოთ რიცხვი სიმების გადაკვეთით მარცხნიდან მარჯვნივ შემდეგნაირად:
'1' = 1
'13' = (1 x 10) + 3 = 13
'133' = (13 x 10) + 3 = 133
'1337' = (133 x 10) + 7 = 1337

ახლა ამ პრობლემაში, რადგან საქმე გვაქვს ფუძე -26 რიცხვის სისტემასთან. იმავე იდეის საფუძველზე, ჩვენ შეგვიძლია უბრალოდ 10-ები შევცვალოთ 26-ით და ანბანი გადავაქციოთ ციფრებად.

სათაურისთვის "LEET":

L = 12
E = (12 x 26) + 5 = 317
E = (317 x 26) + 5 = 8247
T = (8247 x 26) + 20 = 214442

განხორციელება

C ++ პროგრამა Excel- ის ფურცლის სვეტის ნომერი Leetcode Solution

#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

Java პროგრამა Excel- ის ფურცლის სვეტის ნომრისთვის Leetcode Solution

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- ის ფურცლის სვეტის ნომრისთვის Leetcode Solution

დროის სირთულე

O (N): სადაც N არის სიმბოლოების საერთო რაოდენობა შეყვანის სტრიქონში. ერთხელ განვახორციელეთ სიმბოლოების გასწვრივ, ამიტომ დროის სირთულე იქნება O (N).

სივრცის სირთულე 

O (1): შედეგის შესანახად ჩვენ მხოლოდ ერთი მთელი ცვლადი გამოვიყენეთ.