本文主要是介绍剑指offer:excel列号转数字,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题说明:在Excel2003中,用A表示第1列,B表示第2列......Z表示第26列,AA表示27列,AB表示第28列......以此类推。写出由excel列号转数字和数字转列号的函数。
private static final char[] excelLetterTable = {'A', 'B', 'C', 'D', 'E','F', 'G', 'H', 'I', 'J','K', 'L', 'M', 'N', 'O','P', 'Q', 'R', 'S', 'T','U', 'V', 'W', 'X', 'Y', 'Z'};
private static final char FIRST_CHAR_EXCEL_LETTER = 'A';
private static final int EXCEL_RADIX = 26;
public static int excelSequenceToDigit(String sequence) { if (sequence == null) {return 0;}int result = 0;for (int i = 0; i < sequence.length(); i++) {result = EXCEL_RADIX * result + Character.toUpperCase(sequence.charAt(i)) - FIRST_CHAR_EXCEL_LETTER + 1;}return result;
}
public static String digitToExcelSequence(int number) {if (number <= 0) {return null;}char[] reslut = new char[32];int charPos = 32;int current = number;int remainder = 0;while (current != 0) {remainder = current % EXCEL_RADIX;// 0 ~ radix - 1if (remainder == 0) {remainder = EXCEL_RADIX;current -= 1;}reslut[--charPos] = excelLetterTable[remainder - 1];current /= EXCEL_RADIX;}return new String(reslut, charPos, 32 - charPos);
}
这篇关于剑指offer:excel列号转数字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!