Excel ഷീറ്റ് നിര ശീർഷകം ലീറ്റ്കോഡ് പരിഹാരം  


വൈഷമ്യ നില എളുപ്പമായ
പതിവായി ചോദിക്കുന്നു അഡോബി ഗൂഗിൾ
അൽഗോരിതം കോഡിംഗ് അഭിമുഖം അഭിമുഖം ലീട്ട് കോഡ് LeetCodeSolutions മഠം നമ്പർ സിസ്റ്റം

പ്രശ്നം പ്രസ്താവന  

ഈ പ്രശ്‌നത്തിൽ ഒരു Excel ഷീറ്റിന്റെ നിര നമ്പറിനെ പ്രതിനിധീകരിക്കുന്ന ഒരു പോസിറ്റീവ് സംഖ്യ നൽകിയിരിക്കുന്നു, ഒരു Excel ഷീറ്റിൽ ദൃശ്യമാകുന്നതുപോലുള്ള അനുബന്ധ നിര ശീർഷകം ഞങ്ങൾ നൽകണം.

Excel ഷീറ്റ് നിര ശീർഷകം ലീറ്റ്കോഡ് പരിഹാരം

ഉദാഹരണം

#1

28
"AB"

#2

701
"ZY"

സമീപനം  

ഈ പ്രശ്നം നമുക്ക് നേരിടേണ്ട പ്രശ്നത്തിന്റെ വിപരീതമാണ് ഒരു നിര ശീർഷകത്തിൽ നിന്ന് നിര നമ്പർ കണ്ടെത്തുക.
അതിനാൽ ആ പ്രശ്‌നത്തിൽ ഞങ്ങൾ ഒരു ബേസ് -26 നമ്പറിനെ ബേസ് -10 നമ്പറായി പരിവർത്തനം ചെയ്തു, അത് ഒരു ദശാംശ സംഖ്യയാണ്. ഈ പ്രശ്‌നത്തിൽ‌ നിര നമ്പറിൽ‌ നിന്നും നിര ശീർ‌ഷകം കണ്ടെത്തേണ്ടതുണ്ട്. അതിനാൽ ഇവിടെ നമ്മൾ നേരെ വിപരീതമായി ചെയ്യണം, അതായത് ഒരു ബേസ് -10 (ഡെസിമൽ) സംഖ്യയെ നിരവധി ബേസ് -26 സിസ്റ്റമാക്കി മാറ്റണം.

ബേസ് -26 ന് 26 മുതൽ 0 വരെയുള്ള മൂല്യങ്ങളെ പ്രതിനിധീകരിക്കുന്ന 25 പ്രതീകങ്ങൾ ഉണ്ടായിരിക്കണമെന്ന് കരുതുക. എന്നാൽ എക്സൽ ഷീറ്റ് നിര ശീർഷകത്തിൽ ഇത് വളരെ വ്യത്യസ്തമാണ്. ഇത് 1 മുതൽ 26 വരെയുള്ള മൂല്യങ്ങളെ പ്രതിനിധീകരിക്കുന്നു. അതിനാൽ നമ്മൾ AZ പ്രതീകങ്ങൾ 0-25 ആയി ഉപയോഗിക്കുകയാണെങ്കിൽ, അത് സമവാക്യത്തിന് താഴെയായി കാണപ്പെടും:

സ്ട്രിംഗ് ABZ ആയിരിക്കട്ടെ, ഇത് n എന്ന നമ്പറിന് തുല്യമാണ്:
n = (A + 1) * 26 ^ 2 + (B + 1) * 26 ^ 1 + (Z + 1) * 26 ^ 0

എന്തുകൊണ്ട് (A + 1)? കാരണം ചാർ സിസ്റ്റത്തിൽ 'എ' 0 ആണ്, എന്നാൽ എക്സൽ സിസ്റ്റത്തിൽ 'എ' ഒന്നാണ്. ഓരോ ചാർ‌ട്ടിനും അധികമായി ലഭിക്കും.

അതിനാൽ അവസാന ചാർ‌ അതായത് Z ലഭിക്കാൻ നമ്മൾ ആദ്യം മൈനസ് 1 അതായത് n– എന്നിട്ട് n% 26 ലഭിക്കും
(n-1)% 26 = Z.
ഇപ്പോൾ 26 ഉപയോഗിച്ച് വിഭജിച്ച് അടുത്ത പ്രതീകത്തിനായി അതേ പ്രക്രിയ ആവർത്തിക്കുക.
(n-1) / 26 = (A + 1) * 26 ^ 1 + (B + 1) * 26 ^ 0

ഇതും കാണുക
കല്ല് ഗെയിം ലീട്ട് കോഡ്

അൽഗോരിതം

  1. പ്രതീകങ്ങൾ സംഭരിക്കുന്നതിന് ഒരു ശൂന്യമായ സ്ട്രിംഗ് സൃഷ്ടിക്കുക.
  2. N പോസിറ്റീവ് ആയിരിക്കുമ്പോൾ ഒരു ലൂപ്പ് പ്രവർത്തിപ്പിക്കുക.
    • N ൽ നിന്ന് 1 കുറയ്ക്കുക.
    • N ന്റെ മൊഡ്യൂളോ 26 കൊണ്ട് നിലവിലെ പ്രതീകം നേടുക.
    • N നെ 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

Excel ഷീറ്റ് നിര ശീർഷക ലീറ്റ്കോഡ് പരിഹാരത്തിനായുള്ള സങ്കീർണ്ണത വിശകലനം  

സമയ സങ്കീർണ്ണത

O (ലോഗ് (n)): ഇവിടെ n എന്നത് നൽകിയ നിര നമ്പറാണ്. ഓരോ ആവർത്തനത്തിലും ഞങ്ങൾ സംഖ്യയെ 26 കൊണ്ട് ഹരിക്കുന്നു, അതിനാൽ സമയ സങ്കീർണ്ണത O (ലോഗ് (n)) ആയിരിക്കും.

ബഹിരാകാശ സങ്കീർണ്ണത 

O (1): ഫലം സംഭരിക്കുന്നതിനല്ലാതെ ഞങ്ങൾ അധിക സ്ഥലമൊന്നും ഉപയോഗിക്കുന്നില്ല.

1