栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

字符串中N进制加法、十进制转N进制的模板(java版本含注释)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字符串中N进制加法、十进制转N进制的模板(java版本含注释)

目录
  • 前言
  • 1. 进制加法
    • 1.1 字符串的十进制加法
    • 1.2 字符串的N进制加法
  • 2. 进制转换
    • 2.1 十进制转七进制
    • 2.2 十进制转换N进制

前言

关于进制数的加法
在笔试或者面试都是一个非常常见的题型

最主要的是它的从后往前加以及进位的处理

此处放出的代码是带输入输出,比较全面万能

1. 进制加法 1.1 字符串的十进制加法

为了更好的拓展N进制,先从二进制开始
从后往前加,要判断有没有数字,以及有没有进位,以及数字的进位怎么处理

题目:输入两字符串,输出其十进制的加法
延伸拓展:
此题来源于:leetcode:415. 字符串相加

import java.util.*;

public class test  {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String num1=sc.nextLine();
        String num2=sc.nextLine();

        int i=num1.length()-1,j=num2.length()-1;
        //处理进位
        int add=0;
        //通过StringBuilder处理,主要它有反转的这个函数
        StringBuilder ans=new StringBuilder();
        //此处是个大条件,只有一方不满足才会退出
        while(i>=0||j>=0||add!=0){
            //转换为字母通过-‘0’
            int x=i>=0?num1.charAt(i)-'0':0;
            int y=j>=0?num2.charAt(j)-'0':0;
            int result=x+y+add;
            //添加值到每个字符串的最后一个
            ans.append(result%10);
            //添加进位给予到下一个值
            add=result/10;
            i--;
            j--;
        }
        //字符串的反转
        ans.reverse();

     
       System.out.println(ans.toString());

    }
}
1.2 字符串的N进制加法

如果转换为N进制,就是进位以及保留的位数,将上面的10改成所想要的进制即可

import java.util.*;

public class test  {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String num1=sc.nextLine();
        String num2=sc.nextLine();
        //注意区别在这里,多个个进制输入
        int base=sc.nextInt();

        int i=num1.length()-1,j=num2.length()-1;
        //处理进位
        int add=0;
        //通过StringBuilder处理,主要它有反转的这个函数
        StringBuilder ans=new StringBuilder();
        //此处是个大条件,只有一方不满足才会退出
        while(i>=0||j>=0||add!=0){
            //转换为字母通过-‘0’
            int x=i>=0?num1.charAt(i)-'0':0;
            int y=j>=0?num2.charAt(j)-'0':0;
            int result=x+y+add;
            //添加值到每个字符串的最后一个
            ans.append(result%base);
            //添加进位给予到下一个值
            add=result/base;
            i--;
            j--;
        }
        //字符串的反转
        ans.reverse();


       System.out.println(ans.toString());

    }
}
2. 进制转换 2.1 十进制转七进制

题目:504. 七进制数
给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。

示例 1:

输入: num = 100
输出: “202”

示例 2:

输入: num = -7
输出: “-10”

提示:

-107<= num <= 107


思路:

class Solution {
    public String convertToBase7(int num) {
        if(num==0)return "0";

        boolean ff=num<0;
        //记得要转换为正数来计算
        num = Math.abs(num);
        StringBuilder sb=new StringBuilder();
        
        while(num!=0){
            sb.append(num%7);
            num/=7;
        }
        //添加负数到后面,然后在做反转才是对的
        if(ff)sb.append('-');
        sb.reverse();

        
        return sb.toString();


    }
}
2.2 十进制转换N进制

注意,如果是数字转字符,则位数字+‘A’,如果位字符转换为数字,则为字符-‘0’

题目:类似提供一个数字,以及进制数(2-16)将其转换成对应的进制数

import java.util.*;

public class test  {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        
        int num=sc.nextInt();
        if(num==0)System.out.println("0");

        //注意区别在这里,多个个进制输入
        int base=sc.nextInt();
        
        //主要为了后期添加一个符号而已
        boolean state =num<0;
        //正数负数都变为正数来计算
        num=Math.abs(num);

        //通过StringBuilder处理,主要它有反转的这个函数
        StringBuilder ans=new StringBuilder();
        while(num!=0){
            //判断添加到末尾的数字是多少,大于10的要特殊处理,转换为字母
            int f= num % base;
            if(f>=10){
                //将其转换成字母
                ans.append((char)(f-10+'A'));
            }else{
                ans.append(f);
            }

            num/=base;
        }

		if(state)ans.append('-');
        //字符串的反转
        ans.reverse();
        


       System.out.println(ans.toString());

    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/831779.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号