华为上机测试题(Excel表格纵列字母数字转换-java)

 PS:这是我刚作的一道题,题目不难,满分60,得分40,你们看看哪里有问题,欢迎提意见,感谢!java

/*函数

 * 题目:Excel表格纵列字母数字转换spa

 * 描述: 在Excel中列的编号为A-Z,AA-AZ,BA-BZ.....CZB.....,请实现一个函数要求知足如下功能,将编号进行修改,code

 * 如A-Z为1-26,而后翻转为两位,AA为27,AB为28。。。。。ZZ为702,而后翻转为3位,AAA=703,AAB=704。。。blog

输入的字符串最长只有4。内存

题目类别: 字符串字符串

难度: 初级class

分数: 60import

运行时间限制: 无限制im

内存限制: 无限制

阶段: 应聘考试 输入: 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 }
相关文章
相关标签/搜索