የ Excel ሉህ አምድ ርዕስ Leetcode መፍትሔ


የችግር ደረጃ ቀላል
ውስጥ በተደጋጋሚ ተጠየቀ የ Adobe google
ሒሳብ የቁጥር ስርዓት

የችግሩ መግለጫ

በዚህ ችግር ውስጥ የ ‹Excel› አምድ ቁጥርን የሚወክል አዎንታዊ ኢንቲጀር ተሰጥቷል ፣ በ Excel ሉህ ውስጥ እንደሚታየው ተጓዳኙን የዓምድ ርዕስ መመለስ አለብን ፡፡

የ Excel ሉህ አምድ ርዕስ Leetcode መፍትሔ

ለምሳሌ

#1

28
"AB"

#2

701
"ZY"

ቀረበ

ይህ ችግር ያለብን የችግሩ ተገላቢጦሽ ነው የዓምድ ቁጥሩን ከአንድ አምድ ርዕስ ያግኙ።
ስለዚህ በዚያ ችግር ውስጥ ቤዝ -26 ቁጥርን ወደ ቤዝ -10 ቁጥር የአስርዮሽ ቁጥር ቀይረናል ፡፡ በዚህ ችግር ውስጥ ከአምድ ቁጥር የአዕማድ ርዕስን ማግኘት አለብን ፡፡ ስለዚህ እዚህ እኛ ተቃራኒውን ማድረግ አለብን ፣ ማለትም የመሠረት -10 (አስርዮሽ) ቁጥር ​​ወደ ቁጥር-ቤዝ-26 ስርዓት መለወጥ አለብን።

በአጠቃላይ ቁጥር ስርዓት ውስጥ እናውቃለን ቤዝ -26 ከ 26 እስከ 0 እሴቶችን የሚወክል 25 ቁምፊዎች ሊኖሩት ይገባል 1 ግን በ Excel ሉህ አምድ ርዕስ ውስጥ ይህ ትንሽ የተለየ ነው ፡፡ እሱ እሴቶችን ይወክላል ከ 26 እስከ 0. ስለዚህ AZ ን ከ25-XNUMX እንደ ቁምፊዎች የምንጠቀም ከሆነ ከዚያ ከእኩል በታች ይመስላል ፡፡

ሕብረቁምፊ 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 = ዜ
አሁን በ 26 ይካፈሉ እና ለቀጣይ ባህሪ ተመሳሳይ ሂደት ይድገሙ።
(n-1) / 26 = (A + 1) * 26 ^ 1 + (ቢ + 1) * 26 ^ 0

አልጎሪዝም

  1. ቁምፊዎችን ለማከማቸት ባዶ ሕብረቁምፊ ይፍጠሩ።
  2. N አዎንታዊ በሚሆንበት ጊዜ loop ን ያሂዱ።
    • 1 ን ከ n ቀንስ።
    • የ n ን በ 26 ሞዱሎ በመጠቀም የአሁኑን ባህሪ ያግኙ ፡፡
    • N ን በ 26 ይከፋፍሉ።
  3. ከቀኝ ወደ ግራ ቁምፊዎችን ስላገኘን አሁን የውጤቱን ሕብረቁምፊ ይቀይሩ።
  4. የተገላቢጦሹን ገመድ ይመልሱ።

አፈጻጸም

የ C ++ ፕሮግራም ለ Excel ሉህ አምድ ርዕስ Leetcode Solution

#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

የጃቫ ፕሮግራም ለ Excel ሉህ አምድ ርዕስ Leetcode መፍትሔ

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 ሉህ አምድ ርዕስ Leetcode መፍትሄ ውስብስብነት ትንተና

የጊዜ ውስብስብነት

ኦ (መዝገብ (n)): N የተሰጠው አምድ ቁጥር የት ነው? በእያንዳንዱ ድግግሞሽ ቁጥሩን በ 26 እንከፍላለን ፣ ስለሆነም የጊዜ ውስብስብነት O (log (n)) ይሆናል ፡፡

የቦታ ውስብስብነት 

ኦ (1) ውጤቱን ከማከማቸት ውጭ ሌላ ተጨማሪ ቦታ እየተጠቀምን አይደለም ፡፡