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


 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM