当前位置: 首页 > news >正文

【力扣练习题】加一

package sim;import java.math.BigDecimal;
import java.util.Arrays;public class Add1 {/*给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits = [0]输出:[1]*/public static void main(String[] args) {int[] nums= {9,8,7,6,5,4,3,2,1,0};int[] nums1=plusOne1(nums);System.out.println(Arrays.toString(nums1));}public static int[] plusOne1(int[] digits) {//[9,8,7,6,5,4,3,2,1,0]//将该数组所有元素变成一个整数String str="";for(int i=0;i<digits.length;i++) {str+=digits[i];}//str=123BigDecimal nums=new BigDecimal(str);BigDecimal one=new BigDecimal(1);nums=nums.add(one);//加1  ---->9876543211String arr=String.valueOf(nums);//987654321//算出应除的位数BigDecimal yz=new BigDecimal(10);for(int j=0;j<arr.length()-1;j++) {one=one.multiply(yz);//1000000000}//求每一位挨个往数组中存放int[] res=new int[str.length()];for(int i=0;i<digits.length;i++) {	//BigDecimal的divideAndRemainder方法求余,返回的是一个数组(商,余数)BigDecimal[] b=nums.divideAndRemainder(one);//dig[0]=1,res[i]=b[0].intValue();//商即为每位数字nums=b[1];//余数作为接下来的商one=one.divide(yz);//除数改变(少一位即除10)}return res;}
}

        这里将字符串转成int类型时,不要直接用int接收,因为可能会存在超出int范围(-2147483648~2147483647),可以采用BigDecimal来接收,就不会报“Exception in thread "main" java.lang.NumberFormatException: For input string: "98765432101"
    at java.lang.NumberFormatException.forInputString(Unknown Source)”这个错误了。

以上是我的解题思路,还有别的其他思路,欢迎诸君共同探讨。

http://www.lryc.cn/news/161837.html

相关文章:

  • Linux--I/O复用之select
  • 数据结构大作业 成绩分析c语言程序设计
  • Consul学习笔记之-初识Consul
  • python实现读取并显示图片的两种方法
  • Spring Boot 整合 MyBatis
  • 2023高教社杯数学建模A题B题C题D题E题思路模型 国赛建模思路分享
  • 手机木马远程控制复现
  • linux 安装Docker
  • Java中的值传递与引用传递 含面试题
  • SQL中CONVERT()函数用法详解
  • 借助各大模型的优点生成原创视频(真人人声)Plus
  • 技能大赛物联网赛项参赛软件建设方案
  • 蓝桥杯官网练习题(凯撒加密)
  • JavaScript 数组中常用的方法
  • YOLOV7改进-添加基于注意力机制的目标检测头(DYHEAD)
  • 爬虫爬取mp3文件例子
  • 说说什么是间隙锁
  • python小题库(三)
  • 【前端设计模式】之单例模式
  • Linux——(第六章)常用指令(一)
  • 第19章_瑞萨MCU零基础入门系列教程之RTC
  • 6、Spring之依赖注入源码解析(上)
  • vscode各种配置的方法
  • 每天几道面试题(第一天)
  • [paddle]paddlepaddle官方安装命令合集
  • 使用JS实现一个简单的观察者模式(Observer)
  • 智能井盖传感器:高效守护城市道路安全
  • pycharm创建py文件时自动添加基础信息--模板
  • Notpad++常用正则表达式替换案例集锦
  • DGA行为转变引发了对网络安全的担忧