华为上机题-二师弟的星际加法

1 问题描述

我是网络公司的一名普通程序员,英文名Steven,发音比较像“师弟”,自从入职培训自我介绍后,大家就称我为“二师弟”,我喜欢看科幻小说,也喜欢做梦,有一次梦到外星球,发现外星人使用的并非10进制/16进制等,有些星球居然使用N进制(据统计N都在2~35之间),现在我们将首先给您一个数字表示N进制,然后给出两个数字的字符串,请算出其求和结果并输出,如果输入不能正常计算则输出-1。

说明:
1:数字的字符串其中包括0-9和a-z(表示10-35)。
2:所有的输入和输出都只会是小写字母或数字,不存在其他字符。

运行时间限制: 无限制
内存限制: 无限制

输入:
整形数:计算进制
字符串:计算数1
字符串:计算数2

输出:
字符串:计算结果

样例输入:
10
100
100

样例输出:
200

2 我的解答

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;public class Main3 {public static void main(String[] args) {Main3 main = new Main3();Scanner scanner = new Scanner(System.in);int degit = scanner.nextInt();String s1 = scanner.next();String s2 = scanner.next();System.out.println(main.plus(degit, s1, s2));}public String plus(int degit,String s1,String s2){Map<Character, Integer> hashMap1 = new HashMap<Character, Integer>();hashMap1.put('1', 1);hashMap1.put('2',2);hashMap1.put('3',3);hashMap1.put('4',4);hashMap1.put('5',5);hashMap1.put( '6',6);hashMap1.put('7',7);hashMap1.put( '8',8);hashMap1.put('9',9);hashMap1.put('A',10);hashMap1.put('B',11);hashMap1.put('C',12);hashMap1.put('D',13);hashMap1.put('E',14);hashMap1.put('F',15);hashMap1.put('0',0);hashMap1.put('G',16);hashMap1.put('H',17);hashMap1.put('I',18);hashMap1.put('J',19);hashMap1.put('K',20);hashMap1.put('L',21);hashMap1.put('M',22);hashMap1.put('N',23);hashMap1.put('O',24);hashMap1.put('P',25);hashMap1.put('Q',26);hashMap1.put('R',27);hashMap1.put('S',28);hashMap1.put('T',29);hashMap1.put('U',30);hashMap1.put('V',31);hashMap1.put('W',32);hashMap1.put('X',33);hashMap1.put('Y',34);hashMap1.put('Z',35);Map<Integer, Character> hashMap2 = new HashMap<Integer, Character>();hashMap2.put(1, '1');hashMap2.put(2,'2');hashMap2.put(3,'3');hashMap2.put(4,'4');hashMap2.put(5,'5');hashMap2.put( 6,'6');hashMap2.put(7,'7');hashMap2.put( 8,'8');hashMap2.put(9,'9');hashMap2.put(10,'A');hashMap2.put(11,'B');hashMap2.put(12,'C');hashMap2.put(13,'D');hashMap2.put(14,'E');hashMap2.put(15,'F');hashMap2.put(0,'0');hashMap2.put(16,'G');hashMap2.put(17,'H');hashMap2.put(18,'I');hashMap2.put(19,'J');hashMap2.put(20,'K');hashMap2.put(21,'L');hashMap2.put(22,'M');hashMap2.put(23,'N');hashMap2.put(24,'O');hashMap2.put(25,'P');hashMap2.put(26,'Q');hashMap2.put(27,'R');hashMap2.put(28,'S');hashMap2.put(29,'T');hashMap2.put(30,'U');hashMap2.put(31,'V');hashMap2.put(32,'W');hashMap2.put(33,'X');hashMap2.put(34,'Y');hashMap2.put(35,'Z');if(degit<2||degit>35){//System.out.println("1t");return -1+"";}if(!checkValid(hashMap1,s1.toUpperCase(),degit)||!checkValid(hashMap1,s2.toUpperCase(),degit)){//System.out.println("2t");return -1+"";}char[] tmparr = s1.toUpperCase().toCharArray(); char[] tmparr1 = s2.toUpperCase().toCharArray();int length = tmparr.length;       int length1 = tmparr1.length;char[] arr = new char[length];    char[] arr1 = new char[length1];for(int i=0;i<arr.length;i++){arr[i] = tmparr[length-1-i];}  //System.out.println(arr);for(int i=0;i<arr1.length;i++){arr1[i] = tmparr1[length1-1-i];} //System.out.println(arr1);int max = length>length1?length:length1;char[] recArr = new char[max+1];int index = 0;int recplus = 0;while(index<length&&index<length1){int tmp = hashMap1.get(arr[index]); int tmp1 = hashMap1.get(arr1[index]);int res = tmp+tmp1+recplus;//System.out.println(res);recArr[index] = hashMap2.get(res%degit);recplus = res/degit;index++;}while(index<length){int res = hashMap1.get(arr[index])+recplus;recArr[index] = hashMap2.get(res%degit);recplus = res/degit;index++;}while(index<length1){int res = hashMap1.get(arr1[index])+recplus; recArr[index] = hashMap2.get(res%degit);recplus = res/degit;index++;}if(recplus>0){recArr[index] = hashMap2.get(recplus); }else{recArr[index] = '$';}StringBuffer buffer = new StringBuffer();for(int i=recArr.length-1;i>=0;i--){if(recArr[i]!='$'){buffer.append(recArr[i]);}}return buffer.toString().toLowerCase();}public static boolean checkValid(Map<Character,Integer> hmap,String str,int degit){boolean flag = true;char[] charArr = str.toCharArray();for(int i=0;i<charArr.length;i++){if(hmap.get(charArr[i])>=degit){flag = false;}}return flag;}
} 

3 阅读须知

  • 本文代码仅供参考,不喜勿喷
  • 有何问题,可以在评论中指出
  • 任何copy本案例,产生严重后果,本人概不负责
  • 本代码AC所有case

华为上机题-二师弟的星际加法相关推荐

  1. 2014年华为上机题及代码

    http://blog.csdn.net/dalianmaoblog/article/details/11477997 题目来源于http://blog.csdn.net/hackbuteer1/ar ...

  2. 华为上机题汇总----java

        以下华为上机题目都是网上整理得到的,代码都是自己调试过的,由于网上java答案较少,欢迎大家批评指正,也希望对准备华为上机的童鞋们有一点点帮助.在练习的过程中成长,加油!~~  第1题:输入字 ...

  3. 2013华为上机题C++编程

    1. 字符串处理 把一个字符串中的除大写字母.小写字母和数字字符之外的其他字符都去掉,输出新字符串. 要求实现函数: void my_string(char* input, char* output) ...

  4. 华为上机题之Word Maze(单词迷宫)

    Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉.如上图,假设给定单词if,你必须先吃掉i然后才能吃掉f. 但现在你的任务可没有这么简单,你现在处于一个 ...

  5. 面向对象上机题-迭归算法

    //面向对象上机题 二 //迭归算法 //Date:2005/10/27 //Make By:张建波 #include "iostream.h" #include "st ...

  6. 二级c语言上机程序填空,浙江省计算机二级c语言上机考试真题(二)程序填空

    浙江省计算机二级c语言上机考试真题 (二)程序填空 1,求最大公约数 ,下面程序中"____ N ____"是根据程序功能需要填充部分,请完成程序填充(注意:不得加行.减行.加句. ...

  7. 华为2017年实习招聘上机题

    表示今年华为的上机题是在牛客网上进行的.难度较往年来说降低了几个档次,可能是实习生招聘的要求不是那么高.之前一直在刷华为武研所的OJ,总体而言今年实习生的上机题水平与OJ上的简单题一致. 离上机已经过 ...

  8. 国二上机c语言题型,国二c语言上机国二真题

    国二c语言上机国二真题 第一套 程序填空 给定程序中,函数fun的功 能是:将形参n所指变量中, 各位上为偶数的数去除,剩 余的数按原来从高位到低位 的顺序组成一个新的数,并 通过形参指针n传回所指变 ...

  9. 【华为2015暑期实习生上机题】仿照Excel的列编号

    这是本人上个月做的,武汉地区的上机题中的第三个,三个题目都是字符串的,共450分,两个小时内完成. 仿照Excel的列编号,给出该列编号字符串,输出一个数字. 例如:a对应1,z对应26,aa对应27 ...

最新文章

  1. neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead
  2. 在Nature都点赞的大会上,马斯克被「脑机接口之父」炮轰了:他说的话,我一个字都不认同...
  3. 3.7python怎么安装清屏_python3.7中怎么清屏
  4. SQLServer数据表的创建
  5. 4、Hive数据操作,DDL操作,CRUD database,CRUD table,partition,view,index,show命令等
  6. Unix Shell 数学计算命令
  7. 进制转换练习-其它进制转换为十进制
  8. Xshell如何进行文件上传?
  9. invalid signature什么意思_function是什么意思?
  10. presto执行一条查询分为七步
  11. 学习记录 | ZigBee协议栈工作流程
  12. vfp python_2018年VisualFoxPro
  13. 2012年10月第3周(10.15-10.21)
  14. java查询数据导出excel并返回给浏览器下载
  15. 服务注册与发现-全搞懂
  16. 再贴一个Fleaphp相关的
  17. 英语面试中五大典型问题及其回答技巧
  18. IT领域仍是风投宠儿
  19. tiny2440刷机步骤
  20. c语言数组转bin,C语言数组转换为BIN文件工具

热门文章

  1. TiDB 6.0 新特性
  2. python 实战之模仿开发QQ聊天软件(一)登录GUI设计
  3. python私有化属性
  4. LinQ,WCF,ExtJs之”初吻“
  5. mac系统装mysql还是mariadb_Mac安装MariaDB数据库
  6. phpcms默认模板目录解析
  7. 数据清洗python实现箱线图_GitHub - nonefirst/data_analysis: 基于Python的南京二手房数据采集及可视化分析...
  8. 基础回顾(二)qps、rps、tps
  9. mysql 字段类型 负数_MySQL字段类型详解
  10. mysql工资修改为空_MYSQL工资管理系统