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


 

你可能感兴趣的:(Excel)