JAVA 之 每日一记 之 算法( 给你一个Excel表列序号,返回出它对应的数字 )
代码结果:(只想要代码的可以离开了,代码给你了,绝对能用的。想要思路的往下看。)
class Solution {
      public int titleToNumber(String s) {
            int ans = 0;
            for(int i=0;i<s.length();i++) {
                  int num = s.charAt(i) - 'A' + 1;
                    ans = ans * 26 + num;
            }
            return ans;
      }
}
解题思路
标签:字符串遍历,进制转换
初始化结果 ans = 0,遍历时将每个字母与 A 做减法,因为 A 表示 1,所以减法后需要每个数加 1,计算其代表的数值 num = 字母 - ‘A’ + 1
因为有 26 个字母,所以相当于 26 进制,每 26 个数则向前进一位
所以每遍历一位则ans = ans * 26 + num
以 ZY 为例,Z 的值为 26,Y 的值为 25,则结果为 26 * 26 + 25=701
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号