华为上机测试题(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 }


 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。