एक्सेल शीट कॉलम टाइटल लेकोडकोड सॉल्यूशन


कठिनाई स्तर आसान
में अक्सर पूछा एडोब गूगल
मठ संख्या प्रणाली

समस्या का विवरण

इस समस्या में एक सकारात्मक पूर्णांक दिया जाता है जो एक एक्सेल शीट के एक कॉलम नंबर का प्रतिनिधित्व करता है, हमें इसके संबंधित कॉलम टाइटल को वापस करना होगा जैसा कि एक्सेल शीट में दिखाई देता है।

एक्सेल शीट कॉलम टाइटल लेकोडकोड सॉल्यूशन

उदाहरण

#1

28
"AB"

#2

701
"ZY"

दृष्टिकोण

यह समस्या उस समस्या का उल्टा है जिसमें हमें होना है कॉलम शीर्षक से कॉलम नंबर का पता लगाएं।
तो उस समस्या में हमने एक आधार -26 संख्या को आधार -10 संख्या में बदल दिया जो एक दशमलव संख्या है। इस समस्या में हमें कॉलम नंबर से कॉलम टाइटल का पता लगाना होगा। तो यहाँ हमें बस विपरीत करना है, अर्थात हमें आधार -10 (दशमलव) संख्या को आधार -26 प्रणाली की संख्या में बदलना है।

हम जानते हैं कि आधार संख्या -26 की सामान्य संख्या प्रणाली में 26 अक्षर होने चाहिए जो मान 0 से 25 का प्रतिनिधित्व करते हैं। लेकिन एक्सेल शीट कॉलम शीर्षक में यह थोड़ा अलग है। यह 1 से 26 तक मूल्यों का प्रतिनिधित्व करता है। इसलिए यदि हम 0-25 के रूप में AZ का उपयोग करते हैं, तो यह नीचे दिए गए समीकरण की तरह दिखेगा:

स्ट्रिंग को ABZ होने दें, यह संख्या n के अनुरूप है:
n = (A + 1) * 26 ^ 2 + (B + 1) * 26 ^ 1 + (Z + 1) * 26 ^ 0

क्यों (A + 1)? क्योंकि चार सिस्टम में 'ए' 0 है, लेकिन एक्सेल सिस्टम में 'ए' एक है। हर चार को एक अतिरिक्त मिलता है।

तो अंतिम चार यानी जेड पाने के लिए हम पहले शून्य से 1 यानी n- और फिर n% 26 प्राप्त करेंगे
(n-1)% 26 = Z
अब 26 के साथ विभाजित करें और अगले चरित्र के लिए उसी प्रक्रिया को दोहराएं।
(एन -1) / 26 = (ए + 1) * 26 ^ 1 + (बी + 1) * 26 ^ 0

कलन विधि

  1. पात्रों को संग्रहीत करने के लिए एक खाली स्ट्रिंग बनाएं।
  2. एक लूप चलाएं जबकि n पॉजिटिव है।
    • N से 1 घटाएँ।
    • 26 के द्वारा n का modulo करके वर्तमान वर्ण प्राप्त करें।
    • 26 से विभाजित करें।
  3. अब परिणाम स्ट्रिंग को उल्टा करें क्योंकि हमने वर्णों को दाएं से बाएं पाया है।
  4. उलटे हुए तार को लौटाएं।

कार्यान्वयन

एक्सेल शीट कॉलम शीर्षक लेकोडकोड समाधान के लिए सी ++ कार्यक्रम

#include <bits/stdc++.h>
using namespace std;

string convertToTitle(int n) 
{        
    string ans;
    while(n>0)
    {
        --n;
        int d= n%26;
        n/=26;
        ans+= 'A'+d;            
    }
   reverse(ans.begin(),ans.end());
   return ans; 
}

int main() 
{
   cout<<convertToTitle(28) <<endl;
   return 0; 
}
AB

एक्सेल शीट कॉलम टाइटल लेकोडकोड समाधान के लिए जावा प्रोग्राम

class Rextester{
    
    public static String convertToTitle(int n) 
    {
        StringBuilder ans= new StringBuilder();
        while(n>0)
        {
            --n;
            int d= n%26;
            n/=26;
            ans.append((char)('A'+d));            
        }
        ans.reverse();
        return ans.toString(); 
    }
    
    public static void main(String args[])
    {    	
       System.out.println( convertToTitle(28)  ) ;
    }
}
AB

एक्सेल शीट कॉलम शीर्षक लेकोडकोड समाधान के लिए जटिलता विश्लेषण

समय जटिलता

O (लॉग (n)): जहाँ n दिया गया कॉलम नंबर है। हम प्रत्येक पुनरावृत्ति में संख्या को 26 से विभाजित कर रहे हैं, इसलिए समय जटिलता O (लॉग (n)) होगी।

अंतरिक्ष जटिलता 

ओ (1): हम परिणाम को संग्रहीत करने के अलावा किसी भी अतिरिक्त स्थान का उपयोग नहीं कर रहे हैं।