Λύση Leetcode Number Number Sheet Excel


Επίπεδο δυσκολίας Εύκολος
Συχνές ερωτήσεις Microsoft
μαθηματικά Αριθμός Σύστημα

Δήλωση προβλήματος

Σε αυτό το πρόβλημα μας δίνεται ένας τίτλος στήλης όπως εμφανίζεται σε ένα φύλλο Excel, πρέπει να επιστρέψουμε τον αριθμό στήλης που αντιστοιχεί στον συγκεκριμένο τίτλο στήλης στο Excel όπως φαίνεται παρακάτω.

Λύση Leetcode Number Number Sheet Excel

Παράδειγμα

#1

"AB"
28

#2

"ZY"
701

Προσέγγιση

Για να βρούμε τον αριθμό στήλης για έναν συγκεκριμένο τίτλο στήλης μπορούμε να το σκεφτούμε μετατροπή από ένα σύστημα αριθμών σε άλλο σύστημα αριθμών.
Όπως στον δεκαδικό αριθμό έχουμε χαρακτήρες 0 έως 9 για να αντιπροσωπεύσουμε οποιονδήποτε αριθμό στο δεκαδικό. Ομοίως στον τίτλο της στήλης οι χαρακτήρες είναι από το Α έως το Ω για να αντιπροσωπεύουν οποιονδήποτε αριθμό. Υπάρχουν συνολικά 26 σύμβολα για κάθε μέρος, επομένως μπορούμε να σκεφτούμε έναν αριθμό σε ένα σύστημα του οποίου η βάση είναι 26.

Τώρα η ερώτηση γίνεται πολύ απλή. Όπως μετατρέπουμε οποιοδήποτε δυαδικό ή δεκαεξαδικό αριθμό στην δεκαδική του μορφή, πρέπει να μετατρέψουμε αυτήν τη συμβολοσειρά τίτλου σε δεκαδικό αριθμό.

Για παράδειγμα, εάν θέλουμε να βρούμε την δεκαδική τιμή της συμβολοσειράς "1337", μπορούμε να βρούμε επαναλαμβανόμενα τον αριθμό διασχίζοντας τη συμβολοσειρά από αριστερά προς τα δεξιά ως εξής:
«1» = 1
«13» = (1 x 10) + 3 = 13
«133» = (13 x 10) + 3 = 133
«1337» = (133 x 10) + 7 = 1337

Τώρα σε αυτό το πρόβλημα καθώς έχουμε να κάνουμε με το σύστημα αριθμών βάσης-26. Με βάση την ίδια ιδέα, μπορούμε απλά να αντικαταστήσουμε τα 10s με 26s και να μετατρέψουμε τα αλφάβητα σε αριθμούς.

Για τίτλο "LEET":

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

Εκτέλεση

Πρόγραμμα C ++ for Excel Sheet Column Number 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 Sheet Column Number 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

Χρόνος πολυπλοκότητας

ΕΠΙ) : Όπου N είναι ο συνολικός αριθμός χαρακτήρων στη συμβολοσειρά εισόδου. Επαναλάβουμε μία φορά κατά μήκος των χαρακτήρων, επομένως η πολυπλοκότητα του χρόνου θα είναι O (N).

Διαστημική πολυπλοκότητα 

O (1): Μόλις χρησιμοποιήσαμε μια ακέραια μεταβλητή για την αποθήκευση του αποτελέσματος.