青海省公路建设服务网站,智能建造概论,宁波教育学会网站建设,网站备案提交管局LeetCode171-Excel表列序号1、问题描述2、解题思路#xff1a;进制转换3、代码实现1、问题描述 给你一个字符串columnTitle,表示Excel表格中得列名称。返回该列名称对应得列序号。
例如#xff1a;
A - 1
B - 2
C - 3
...
Z - 26
AA - 27
AB - 28 …
LeetCode171-Excel表列序号1、问题描述2、解题思路进制转换3、代码实现1、问题描述 给你一个字符串columnTitle,表示Excel表格中得列名称。返回该列名称对应得列序号。
例如
A - 1
B - 2
C - 3
...
Z - 26
AA - 27
AB - 28
...示例 1:
输入: columnTitle A
输出: 1示例 2:
输入: columnTitle AB
输出: 28示例 3:
输入: columnTitle ZY
输出: 701提示
1 columnTitle.length 7columnTitle 仅由大写英文组成columnTitle 在范围 [A, FXSHRXW] 内
2、解题思路进制转换 这个我们可以仿照十进制中的进制转换方法通常我们在从高位向低位处理的时候起始设置nums0,然后每次使用当前位的数值更新nums更新的公式为numsnums∗10vnumsnums*10vnumsnums∗10v,这个v就是当前位的数字。 本题只需要将10进位换成26即可(A-Z有26个字母)即更新公式为numsnums∗26vnumsnums*26vnumsnums∗26v 假设我们给的输入为columnTitleZY,首先Z和Y对应的索引分别为26和25(从1开始这道题没有0对应的字母)那么我们的计算公式如下 nums0numsnums∗26260∗262626numsnums∗262526∗2625701nums0 \\ numsnums*26260*262626 \\ numsnums*262526*2625701 nums0numsnums∗26260∗262626numsnums∗262526∗2625701
3、代码实现 由于本题没有0所以代码中在减去’A’之后要1. package leetcode1;/*** Excel表列序号*/
public class LeetCode171 {/*** 进制转换* 通用规则如下,ans0,ansans*进制vali* 这里为ansans*26vali,但是由于没有0所以减去A之后要1*/public static int titleToNumber(String columnTitle) {int ans0;for (int i 0; i columnTitle.length(); i) {int num columnTitle.charAt(i) - A 1;ansans*26num;}return ans;}public static void main(String[] args) {System.out.println(titleToNumber(ZY));System.out.println(titleToNumber(FXSHRXW));System.out.println(titleToNumber(AZY));}
}测试结果如下