LeetCode — ExcelSheetColumnTitle 、ExcelSheetColumnNumber解题分析
java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。本站提供基于Java框架struts,spring,hibernate等的桌面应用、web交互及移动终端的开发技巧与资料
保持永久学习的心态,将成就一个优秀的你,来 继续搞起java知识。
题目描述:Excel表的每一列列名都是由字母组成,问如何将字母转换成数字,以及如何将数字兑换列对应的字母。形式如下:
1<=>A 2<=>B 3<=>C …… 26<=>Z 27<=>AA 28<=>AB ……
解题思路:该题目就是找到数字与字母之间的转换关系,也就是26进制的问题对于给定的数字,1~26为A~Z、27~52为AA~AZ、然后是BA~BZ……所以确定两点:(1)计算时如果数字模26,则26个就对应0,所以应为n%25+1;(2)高位的字母取决于数字本身是26的几倍对应的字母顺序,比如1~26为26的0倍,27~52为26的1倍……所以给定数字转字母的实现如下:
public class Solution {
public String convertToTitle(int n) {
String str = "";
while(n > 0){
str = (char)((n-1)%26 + 65) + str;
n = (n-1)/26;
}
return str;
}
}
而对于给定字母转化为数字,则从字母高位开始,先将其转换为数字(即char=>int:a<=>64),然后对于当前位如有低位则乘一次26,至无低位出现为止。所以给定字母转数字的实现如下:
public class Solution {
public int titleToNumber(String s) {
int num = 0;
for(int i=0; i<s.length(); i++)
num = num * 26 + (s.charAt(i)-64);
return num;
}
}
javaleetcodeexcel
因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。
后续会有更多的精彩的内容分享给大家。
支付宝扫一扫
微信扫一扫
