给定一个Excel表格中的列名称,返回其相应的列序号。
例如,
A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ... 示例 1:
输入: “A” 输出: 1 示例 2:
输入: “AB” 输出: 28 示例 3:
输入: “ZY” 输出: 701
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/excel-sheet-column-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
和之前Excel表列名称一样使用26进制的思路,个位直接加,十位乘26返回,百位26平方,依次类推
class Solution {
public int titleToNumber(String s) {
String reverse = new StringBuffer(s).reverse().toString();
int i=0,res=0;
for(char c:reverse.toCharArray()){
int tem = c-'A'+1;
// int tem2 = 1;
// for(int j=1;j<i;j++){
// tem2*=26;
// }
res+=tem*Math.pow(26,i);
i++;
}
return res;
}
}
不使用额外空间
class Solution {
public int titleToNumber(String s) {
// String reverse = new StringBuffer(s).reverse().toString();
int i=0,res=0,len=s.length();
for(int j=len-1;j>=0;j--){
int tem = s.charAt(j)-'A'+1;
// int tem2 = 1;
// for(int j=1;j<i;j++){
// tem2*=26;
// }
res+=tem*Math.pow(26,i);
i++;
}
return res;
}
}
正序26进制转10进制
class Solution {
public int titleToNumber(String s) {
int res=0,len=s.length();
for(int j=0;j<len;j++){
int tem = s.charAt(j)-'A'+1;
res=tem+res*26;
}
return res;
}
}