求一个int型整数的两种递减数之和

2024-05-26 01:58
文章标签 两种 int 整数 递减

本文主要是介绍求一个int型整数的两种递减数之和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

求一个int型整数的两种递减数之和
描述:

给出一个整数(负数使用其绝对值),输出这个整数中的两种递减数(1.最大递减数;2.递减数中各位数之和最大的数)之和。


递减数:一个数字的递减数是指相邻的数位从大到小排列的数字,不包含相邻的数位大小相同的情况。


最大递减数:所输入整数的所有递减数中值最大的一个。 如: 75345323,递减数有:75,753,53,53,532,32。那么最大的递减数为753。


各位数字之和最大的递减数: 如75345323中的各递减数:75各位数之和=12(7+5=12),753各位数之和=15(7+5+3=15),53各位数之和=8(5+3=8),532各位数之和=10(5+3+2=10),32各位数之和=5(3+2=5)。那么各位数字之和最大的递减数为753。


输出结果=最大递减数+各位数之和最大的递减数。(1506=753+753)

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

一个int型整数。如:75345323

输出:

一个int型整数。如:1506

 

样例输入:
75345323
样例输出:
1506
答案提示:

 


题目不算严谨,做题的过程中我做了一些假设,总的来说没啥技术含量,单纯的队列结构的使用(指的是思想上的)

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;//1找到递减数
//2找递减数中最大的
//3找到递减数中各位数和最大的数
//返回结果
public class Main {public static void main(String[] args) {// 数据输入 消除负数 把正整数转化成charArray便于处理Scanner in = new Scanner(System.in);int inputNumber = in.nextInt();inputNumber = Math.abs(inputNumber);char[] inputNumbers = (inputNumber + "").toCharArray();List<Integer> decreasingNumbers = findDecreasingNumbers(inputNumbers);// 封装异常输入if (decreasingNumbers.size() == 0) {System.out.println(0);return;}Integer[] decreasingNumbersArray = decreasingNumbers.toArray(new Integer[0]);Arrays.sort(decreasingNumbersArray);int maxDecreasingNumber = decreasingNumbersArray[decreasingNumbersArray.length - 1];int decreasingNuberWithMaxNumberSum = getDecreasingNuberWithMaxNumberSum(decreasingNumbersArray);int sum = maxDecreasingNumber + decreasingNuberWithMaxNumberSum;System.out.println(sum);}// 找到所有递减数// 这里用char去存取数字 所以赋给Integer的时候需要减掉48public static List<Integer> findDecreasingNumbers(char[] inputNumbers) {ArrayList<Integer> decreasingNumbers = new ArrayList<Integer>(20);// 存放中间数据ArrayList<Integer> cache = new ArrayList<Integer>(20);cache.add(inputNumbers[0] - 48);for (int i = 1; i < inputNumbers.length; i++) {if (inputNumbers[i] < inputNumbers[i - 1]) {// 如果满足递减规则 那么与前一位构成递减数的字符串也能满足for (int j = 0; j < cache.size(); j++) {cache.set(j, cache.get(j) * 10 + inputNumbers[i] - 48);decreasingNumbers.add(cache.get(j));}} else {cache.clear();}cache.add(inputNumbers[i] - 48);}decreasingNumbers.trimToSize();return decreasingNumbers;}// 这边预定义一下 如果存在多个各位数和最大的递减数 那么我们将返回最大的结果// 输入是一个 不为空的有序正数集public static int getDecreasingNuberWithMaxNumberSum(Integer[] decreasingNumbersArray) {int result = 0;int maxSum = 0;int temp = 0;for (int i = 0; i < decreasingNumbersArray.length; i++) {temp = getNumberSum(decreasingNumbersArray[i]);if (maxSum > temp) {continue;} else {maxSum = temp;result = decreasingNumbersArray[i];}}return result;}// 返回各位数字的和private static int getNumberSum(int inputInteger) {int result = 0;while (inputInteger > 0) {result += inputInteger % 10;inputInteger /= 10;}return result;}
}


这篇关于求一个int型整数的两种递减数之和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1003243

相关文章

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

python项目打包成docker容器镜像的两种方法实现

《python项目打包成docker容器镜像的两种方法实现》本文介绍两种将Python项目打包为Docker镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录简单版:(一次成功,后续下载对应的软件依赖)第一步:肯定是构建dockerfile,如下:第二步

MySQL集群高可用架构的两种使用小结

《MySQL集群高可用架构的两种使用小结》本文介绍了MySQL的两种高可用解决方案:组复制(MGR)和MasterHighAvailability(MHA),文中通过示例代码介绍的非常详细,对大家的学... 目录一、mysql高可用之组复制(MGR)1.1 组复制核心特性与优势1.2 组复制架构原理1.3

Java8 Collectors.toMap() 的两种用法

《Java8Collectors.toMap()的两种用法》Collectors.toMap():JDK8中提供,用于将Stream流转换为Map,本文给大家介绍Java8Collector... 目录一、简单介绍用法1:根据某一属性,对对象的实例或属性做映射用法2:根据某一属性,对对象集合进行去重二、Du

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

MyBatis流式查询两种实现方式

《MyBatis流式查询两种实现方式》本文详解MyBatis流式查询,通过ResultHandler和Cursor实现边读边处理,避免内存溢出,ResultHandler逐条回调,Cursor支持迭代... 目录MyBATis 流式查询详解:ResultHandler 与 Cursor1. 什么是流式查询?

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过