华为秋招2017年8月份笔试(三)

来源:互联网 发布:手机上怎么删淘宝评论 编辑:程序博客网 时间:2024/05/21 02:50

1.3 字母计数法:

某种场景下,开发人员决定使用字母表示一个正整数,该方法利用英文的小写字母表示,映射规则很简单,
 按字母顺序每一个字母都代表一个值,如下所示列表的部分内容:
a 1
b 2
c 3
...
z 26


aa 27
ab 28
...
huawei 104680767
...
函数原型:
Void convertTo26(const char *input,char *output);
/输入参数input为一个ASCII码的字符串。输入字母表示的数最少一位,最多6位,且字母只能使用小写字母,输入十进制不超过32位整数最大值
输入
  ab
输出
   28


public class Main03 {//等价于26进制转换public static void main(String[] args) {Scanner sc=new Scanner(System.in);while(sc.hasNext()){String str=sc.nextLine();String outstr=null;convertTo26(str);}}//转化为26进制private static void convertTo26(String str) {//判断输入的是数字、 还是字母字符串if (str.length()<1||str.length()>6) {return;}//判断是字母还是数字int sum=0;int len=str.length();char [] c=str.toCharArray();//转换为数组if ( str.charAt(0)>=97 && str.charAt(0)<=122) {//字母for (int i = 0; i <c.length; i++) {sum+=(c[i]-96)*Math.pow(26, c.length-i-1);}System.out.println(sum);}else if (str.charAt(0)>=48 && str.charAt(0)<=57) {//数字int num=Integer.parseInt(str);int mod=0;List<Integer>list=new ArrayList<>(); while(num!=0){mod=num%26;num=num/26; list.add(mod);//将结果进行保存,需要进行逆序处理 }Collections.reverse(list);//逆序处理String result="";for (int i = 0; i < list.size(); i++) {result+=String.valueOf((char)(list.get(i)+96));}System.out.println(result);}}}


原创粉丝点击