校招准备系列:每天一道算法题(8)-进制转换
来源:互联网 发布:网络禁书大合集 编辑:程序博客网 时间:2024/05/29 23:47
校招准备系列:每天一道算法题(8)-进制转换
题目:给定一个十进制数M,将其转化为N进制数,其中2<=N<=16,其中N为32为整型数;
输入:M N,如7 2
输出转化结果:111
思路:1. 使用一个辅助栈来存放M对N取余的结果(M%N);
2. 处理余数<=9和>9两种情况,因为按照16进制,>9的数用ABCDEF取代,所以使用HashMap来存放字符串
3. 再更新取余后M的取值:M=M/N;
4. 循环处理2,3两个步骤,直到M=0;
5. 处理最终结果,出栈,直到栈为空;
import java.util.*;public class Main{ public static void main(String args[]){ Scanner scan = new Scanner(System.in); int m = scan.nextInt(); int n = scan.nextInt(); change(m,n); } public static void change(int m,int n){ if(n == 10){ System.out.print(m); } HashMap<Integer,String> map = new HashMap<>(); // 创建一个map对象,存储对应的字符 map.put(10, "A"); map.put(11, "B"); map.put(12, "C"); map.put(13, "D"); map.put(14, "E"); map.put(15, "F"); Stack stacks = new Stack(); //创建一个栈 存放取余的结果 while(m!=0){ int mods = m%n; stacks.push((mods<=9?mods:map.get(mods))); m = m/n; } boolean flag = true; // 输出 if(!stacks.isEmpty()){ Enumeration items = stacks.elements(); while (items.hasMoreElements()) { if(m<0){ System.out.print(stacks.pop()); if(flag){ System.out.print("-"); flag = false; } }else{ System.out.print(stacks.pop()); } } } }}
您的代码已保存答案错误:您提交的程序没有通过所有的测试用例case通过率为60.00%m为负数的情况 不知道怎么处理 望大家指教。。。。。
阅读全文
0 0
- 校招准备系列:每天一道算法题(8)-进制转换
- 校招准备系列:每天一道算法题(1)
- 校招准备系列:每天一道算法题(2)
- 校招准备系列:每天一道算法题(3)
- 校招准备系列:每天一道算法题(4)
- 校招准备系列:每天一道算法题(5)-两数之和
- 校招准备系列:每天一道算法题(6)-连续最大和
- 校招准备系列:每天一道算法题(7)-末尾0的个数
- 校招准备系列:每天一道算法题(9)-单例
- 校招准备系列:每天一道算法题(10)-二维数组查找
- 校招准备系列:每天一道算法题(11)-替换空格
- 校招准备系列:每天一道算法题(12)-从尾到头打印链表
- 校招准备系列:每天一道算法题(13)-斐波那契数列
- 校招准备系列:每天一道算法题(14)-合并两个排序的链表
- 校招准备系列:每天一道算法题(15)-求1+2+3+...+n
- 【每天一道算法题】
- 【每天一道算法题】
- 【每天一道算法题】
- SVN+Axure合作开发原型图
- 1051. Pop Sequence (25)
- win7下安装gluon步骤
- Akka(23): Stream:自定义流构件功能-Custom defined stream processing stages
- linux安装yum
- 校招准备系列:每天一道算法题(8)-进制转换
- 滴滴2018校招Java岗编程
- POJ 1975:Median Weight Bead
- 脚滑行安全又快捷选择滑行或者步行
- sssp整合分页之完成删除操作
- Java程序设计基础教程-第一章
- faster rcnn 源码阅读
- Mybatis Could not find result map XXXX int
- 1058. A+B in Hogwarts (20)