leetcode-171-Excel表列序号(excel sheet column number)-java

版权声明:此文章为许诗宇所写,如需转载,请写下转载文章的地址 https://blog.csdn.net/xushiyu1996818/article/details/86593161

题目及测试

package pid171;
/* Excel表列序号

给定一个Excel表格中的列名称,返回其相应的列序号。

例如,

    A -> 1
    B -> 2
    C -> 3
    ...
    Z -> 26
    AA -> 27
    AB -> 28 
    ...

示例 1:

输入: "A"
输出: 1

示例 2:

输入: "AB"
输出: 28

示例 3:

输入: "ZY"
输出: 701

致谢:
特别感谢 @ts 添加此问题并创建所有测试用例。

*/




public class main {
	
	public static void main(String[] args) {
		String[] testTable = new String[]{"A","AB","ZY","ADFE"};
		for (String ito : testTable) {
			test(ito);
		}
	}
		 
	private static void test(String ito) {
		Solution solution = new Solution();
		int rtn;
		long begin = System.currentTimeMillis();
		
		System.out.print("ito="+ito+" ");		    
		
		System.out.println();
		//开始时打印数组
		
		rtn = solution.titleToNumber(ito);//执行程序
		long end = System.currentTimeMillis();	
		
		//System.out.println(ito + ": rtn=" + rtn);
		System.out.println( " rtn=" +rtn);
//		for (int i = 0; i < ito.length; i++) {
//		    System.out.print(ito[i]+" ");
//		}//打印结果几数组
		
		System.out.println();
		System.out.println("耗时:" + (end - begin) + "ms");
		System.out.println("-------------------");
	}

}

解法1(成功,5ms,很快)

每个字母代表的数字是now-'A'+1

每次就是sum*26+now

package pid171;

import java.math.BigInteger;

class Solution {
public int titleToNumber(String s) {
    int length=s.length();
    if(length==0){
    	return 0;
    }
    int sum=0;
    for(int i=0;i<length;i++){
    	char now=s.charAt(i);
    	int nowInt=now-'A'+1;
    	sum=sum*26+nowInt;
    }
	
	return sum;
    }
}

猜你喜欢

转载自blog.csdn.net/xushiyu1996818/article/details/86593161