# 算法题：如何从列标题中查找Excel列号？

2021年3月30日10:18:53 发表评论 803 次浏览

## 本文概述

``````column  column number
A  ->  1
B  ->  2
C  ->  3
...
Z  ->  26
AA ->  27
AB ->  28``````

``````Input: A
Output: 1
A is the first column so the output is 1.

Input: AA
Output: 27
The columns are in order A, B, ..., Y, Z, AA ..
So, there are 26 columns after which AA comes.``````

``````To convert CDA, 3*26*26 + 4*26 + 1
= 26(3*26 + 4) + 1
= 26(0*26 + 3*26 + 4) + 1``````

``result = 26*result + s[i] - 'A' + 1``

.

.

## C ++

``````// C++ program to return title to result
// of excel sheet.
#include <bits/stdc++.h>

using namespace std;

// Returns resul when we pass title.
int titleToNumber(string s)
{
// This process is similar to
// binary-to-decimal conversion
int result = 0;
for ( const auto & c : s)
{
result *= 26;
result += c  - 'A' + 1;
}

return result;
}

// Driver function
int main()
{
cout << titleToNumber( "CDA" ) << endl;
return 0;
}``````

## Java

``````// Java program to return title
// to result of excel sheet.
import java.util.*;
import java.lang.*;

class GFG
{

// Returns resul when we pass title.
static int titleToNumber(String s)
{
// This process is similar to
// binary-to-decimal conversion
int result = 0 ;
for ( int i = 0 ; i < s.length(); i++)
{
result *= 26 ;
result += s.charAt(i) - 'A' + 1 ;
}
return result;
}

// Driver Code
public static void main (String[] args)
{
System.out.print(titleToNumber( "CDA" ));
}
}

// This code is contributed
// by Akanksha Rai(Abby_akku)``````

## Python3

``````# Python program to return title to result
# of excel sheet.

# Returns resul when we pass title.
def titleToNumber(s):
# This process is similar to binary-to-
# decimal conversion
result = 0 ;
for B in range ( len (s)):
result * = 26 ;
result + = ord (s[B]) - ord ( 'A' ) + 1 ;

return result;

# Driver function
print (titleToNumber( "CDA" ));

# This code contributed by Rajput-Ji``````

## C#

``````// C# program to return title
// to result of excel sheet.
using System;

class GFG
{

// Returns resul when we pass title.
public static int titleToNumber( string s)
{
// This process is similar to
// binary-to-decimal conversion
int result = 0;
for ( int i = 0; i < s.Length; i++)
{
result *= 26;
result += s[i] - 'A' + 1;
}
return result;
}

// Driver Code
public static void Main( string [] args)
{
Console.Write(titleToNumber( "CDA" ));
}
}

// This code is contributed by Shrikant13``````

``2133``

• 时间复杂度：O(n), 其中n是输入字符串的长度。
• 空间复杂度：O(1)。
由于不需要额外的空间。