Excel баракчасынын мамычасынын номери Leetcode Solution  


Кыйынчылык деңгээли жеңил
Көп суралган Microsoft
Алгоритмы коддоо интервью интервью даярдоо LeetCode LeetCodeSolutions Math Number System

Маселени билдирүү  

Бул маселеде бизге Excel баракчасында көрүнгөндөй тилкенин аталышы берилет, биз Excelде ошол тилке аталышына дал келген тилкенин номерин төмөндө көрсөтүлгөндөй кайтарып беришибиз керек.

Excel баракчасынын мамычасынын номери Leetcode Solution

мисал

#1

"AB"
28

#2

"ZY"
701

жакындоо  

Белгилүү бир тилкенин аталышы үчүн тилкенин номерин табуу үчүн, биз аны ойлоп тапсак болот бир эсептөө тутумунан экинчи эсептөө тутумуна которуу.
Ондук сандагыдай эле, бизде ондон турган ар кандай санды көрсөтүү үчүн 0дөн 9га чейинки белгилер бар. Ушул сыяктуу эле, тилкенин аталышында каалаган санды көрсөтүү үчүн А дан Z ге чейин белгилер коюлган. Ар бир жер үчүн жалпысынан 26 символ бар, ошондуктан системасы боюнча саны 26 болгон бир сан жөнүндө ойлонсок болот.

Эми суроо абдан жөнөкөй болуп калды. Биз кандайдыр бир экилик же алтылык-ондук санды ондук түрүнө которгондой эле, ушул сап сабын ондук санга айландырышыбыз керек.

Мисалы, “1337” сабынын ондук маанисин тапкысы келсе, сапты солдон оңго төмөнкүдөй кылып кайталап таба алабыз:
'1' = 1
'13' = (1 x 10) + 3 = 13
'133' = (13 x 10) + 3 = 133
'1337' = (133 x 10) + 7 = 1337

Эми бул маселеде биз база-26 эсептөө тутуму менен алектенип жатабыз. Ушул эле идеяга таянсак, биз 10ду 26га алмаштырып, алфавиттерди сандарга айланта алабыз.

ошондой эле
Сызык Leetcode Чечимин бөлгөндөн кийинки максималдуу упай

"LEET" наамы үчүн:

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

ишке ашыруу  

Excel баракчасынын мамычасынын C ++ программасы Leetcode чечими

#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 Sheet үчүн тилкесинин колонна номери Leetcode чечими үчүн Java программасы

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 Sheet Column Number Leetcode Solution үчүн татаалдыкты талдоо  

Убакыт татаалдыгы

O (N): Бул жерде N - киргизүү сабындагы белгилердин жалпы саны. Биз каармандардын үстүнөн бир жолу кайталадык, ошондуктан убакыттын татаалдыгы O (N) болот.

Космостун татаалдыгы 

O (1): Жыйынтыкты сактоо үчүн бир гана бүтүн өзгөрмө колдондук.