public class Solution { private int ConvertToC(char c) { int rnt = 0; switch (c) { case 'A': case 'a': rnt = 1; break; case 'B': case 'b': rnt = 2; break; case 'C': case 'c': rnt = 3; break; case 'D': case 'd': rnt = 4; break; case 'E': case 'e': rnt = 5; break; case 'F': case 'f': rnt = 6; break; case 'G': case 'g': rnt = 7; break; case 'H': case 'h': rnt = 8; break; case 'I': case 'i': rnt = 9; break; case 'J': case 'j': rnt = 10; break; case 'K': case 'k': rnt = 11; break; case 'L': case 'l': rnt = 12; break; case 'M': case 'm': rnt = 13; break; case 'N': case 'n': rnt = 14; break; case 'O': case 'o': rnt = 15; break; case 'P': case 'p': rnt = 16; break; case 'Q': case 'q': rnt = 17; break; case 'R': case 'r': rnt = 18; break; case 'S': case 's': rnt = 19; break; case 'T': case 't': rnt = 20; break; case 'U': case 'u': rnt = 21; break; case 'V': case 'v': rnt = 22; break; case 'W': case 'w': rnt = 23; break; case 'X': case 'x': rnt = 24; break; case 'Y': case 'y': rnt = 25; break; case 'Z': case 'z': rnt = 26; break; default: rnt = 0; break; } return rnt; } public int TitleToNumber(string s) { var list = s.ToList(); var count = list.Count; int sum = 0; for (int i = 0; i < list.Count; i++) { var mi = count - i - 1; //mi是幂 * pow(26,mi) int num = ConvertToC(list[i]); sum += num * Convert.ToInt32(Math.Pow(26, mi)); } Console.WriteLine(sum); return sum; } }
https://leetcode.com/problems/excel-sheet-column-number/#/description
补充一个python的实现:
1 class Solution: 2 def titleToNumber(self, s: 'str') -> 'int': 3 s = s.upper() 4 n = len(s) 5 sums = 0 6 k = 0 7 for i in range(n-1,-1,-1): 8 asci = ord(s[i]) - 64 9 sums += 26 ** k * asci 10 k += 1 11 return sums