int len = Math.max(input1.length(), input2.length());
StringBuilder resultString = new StringBuilder();
if (len1 > len2) {
input2 = supplyZero(input2, len1 - len2);
} else if (len1 < len2) {
input1 = supplyZero(input1, len2 - len1);
}
int carry = 0;//进位的标志位
char chrs1[] = input1.toCharArray();
char chrs2[] = input2.toCharArray();
//4568734
//6324012
for (int i = len - 1; i >= 0; i--) {
int temp = chrs1[i] + chrs2[i] - 2 * '0' + carry;
carry = temp / 10;
resultString.append(temp%10);
}
if(carry ==1){
resultString.append("1");
}
return resultString.reverse().toString();
}
//123 --> 0000000000000123
private static String supplyZero(String input, int num) {
StringBuilder sBuilder = new StringBuilder(input).reverse();
for (int i = 0; i < num; i++) {
sBuilder.append("0");// input = "0"+input
}
input = sBuilder.reverse().toString();
return input;
}
[]( )二、进制的转换
-----------------------------------------------------------------------
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )
#### []( )输入描述:
> 输入一个十六进制的数值字符串。
#### []( )输出描述:
> 输出该数值的十进制字符串。
#### []( )输入示例:
> 0xA
#### []( )输出示例:
> 10
**算法关键点**
1、字符串转数组
2、字符串翻转
3、ASCII码加减处理
4、数字相加进位处理
import java.util.Scanner;
//import java.Math.BigInteger;
public class Main{
public static void main(String[] args){
Scanner mScanner = new Scanner(System.in);
while(mScanner.hasNext()){
String input = mScanner.nextLine();
input = input.substring(2);
//简单算法 1
//String result = new BigInteger(input,16).toString(10);
//System.out.println(result);
//简单算法 2
//parseInt(String s,int radix)就是求“int radix”进制数“String s”的十进制数是多少。
// System.out.println(Integer.parseInt(input, 16);//支持2-36进制);
System.out.println(getResult(input));
}
}
private static int getResult(String input){
char[] chrs = input.toCharArray();
int len = chrs.length;
int[] result = new int[len];
for(int i = 0 ; i< len;i++){
//chrs[i] - 'A' +10
if('A'==chrs[i]){
result[i] = 10*getOxNum(len-1-i);
}else if('B'==chrs[i]){
result[i] = 11*getOxNum(len-1-i);
}else if('C'==chrs[i]){
result[i] = 12*getOxNum(len-1-i);
}else if('D'==chrs[i]){
result[i] = 13*getOxNum(len-1-i);
}else if('E'==chrs[i]){
result[i] = 14*getOxNum(len-1-i);
}else if('F'==chrs[i]){
result[i] = 15*getOxNum(len-1-i);
}else{//chrs[i] - '0' +10
result[i] = Integer.valueOf(chrs[i]+"")*getOxNum(len-1-i);
}
}
我的面试宝典:一线互联网大厂Java核心面试题库
以下是我个人的一些做法,希望可以给各位提供一些帮助:
整理了很长一段时间,拿来复习面试刷题非常合适,其中包括了Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等,且还会持续的更新…可star一下!
283页的Java进阶核心pdf文档
Java部分:Java基础,集合,并发,多线程,JVM,设计模式
数据结构算法:Java算法,数据结构
开源框架部分:Spring,MyBatis,MVC,netty,tomcat
分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等
微服务部分:SpringBoot,SpringCloud,Dubbo,Docker
还有源码相关的阅读学习
tis,MVC,netty,tomcat
分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等
微服务部分:SpringBoot,SpringCloud,Dubbo,Docker
[外链图片转存中…(img-0WEFZtqZ-1719160459008)]
还有源码相关的阅读学习
[外链图片转存中…(img-RRig6olU-1719160459008)]