华为上机测试题(Excel表格纵列字母数字转换-java)
PS:这是我刚做的一道题,题目不难,满分60,得分40,大家看看哪里有问题,欢迎提意见,感谢!
/*
* 题目:Excel表格纵列字母数字转换
* 描述: 在Excel中列的编号为A-Z,AA-AZ,BA-BZ.....CZB.....,请实现一个函数要求满足以下功能,将编号进行修改,
* 如A-Z为1-26,然后翻转为两位,AA为27,AB为28。。。。。ZZ为702,然后翻转为3位,AAA=703,AAB=704。。。
输入的字符串最长只有4。
题目类别: 字符串
难度: 初级
分数: 60
运行时间限制: 无限制
内存限制: 无限制
阶段: 应聘考试 输入: 1.输入为字符串,其中所有字母均为大写(不作为异常输入校验点),字母个数不超过4个(代码要校验)。
输出: 输出运算结果
如:输入AA对应的结果是27 样例输入: AB 样例输出: 28
*/
1 import java.util.Scanner; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 7 int num = 0; 8 int len = 0; 9 10 Scanner s = new Scanner(System.in); 11 String str = s.nextLine(); 12 s.close(); 13 14 len = str.length(); 15 if(len <= 0 || len >4) 16 { 17 return; 18 } 19 for(int i = 0; i < len; i++) 20 { 21 char ch = str.charAt(i); 22 if(ch < 'A' || ch > 'Z') 23 { 24 return; 25 } 26 } 27 28 num = strToNum(str, len); 29 30 System.out.println(num); 31 32 } 33 34 private static int strToNum(String str, Integer len) { 35 36 int num = 0; 37 int result = 0; 38 39 for(int i = 0; i < len; i++) 40 { 41 char ch = str.charAt(len - i - 1); 42 num = (int)(ch - 'A' + 1) ; 43 num *= Math.pow(26, i); 44 result += num; 45 } 46 return result; 47 } 48 49 }