`

华为南研所机考练习2 -求最大递增数

阅读更多

求最大递增数

描述:

输入一串数字,找到其中包含的最大递增数。递增数是指相邻的数位从小到大排列的数字。如: 2895345323,递增数有:289,345,23, 那么最大的递减数为345。

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

输入一串数字,默认这串数字是正确的,即里面不含有字符/空格等情况

输出:

输出最大递增数

样例输入:
123526897215
样例输出:
2689

 

思路:

       我看到这道题的第一反应就是先把一组数中的递增数全部找出来,然后在所有递增数中找出最大的,这个思路的难点在于每个递增数的存储,开始想到数组,个数不能确定,所以只能用集合(选了ArrayList),再后来就是让人头疼的边界问题,字符串与整形数的转换问题。结果在自己的机子上运行成功,但在华为平台提交后还是有部分用例未通过,还请哪位朋友帮忙指正。

 

package com.liuhao;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class MaxIncrease {

	public static void main(String[] args) throws IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String str = br.readLine();
		
		char[] charArr = str.toCharArray();
		
		int result = 0;
		
		str = "";
		
		List<String> arrayList = new ArrayList<String>();
		
		for(int i=0; i<charArr.length-1; i++){
			
			if(str.length() == 0){
				str += charArr[i];
			}
			
			
			if (charArr[i+1] > charArr[i] ){
				str += charArr[i+1];
			}
			
			else {
				if(str.length() > 1){
					arrayList.add(str);
				}
				
				str = "";
			}
		}
		
		arrayList.add(str);
		
		int[] a = new int[arrayList.size()];
		
		for(int i=0; i<arrayList.size(); i++){
			if(arrayList.get(i).length() != 0){
				a[i] = Integer.parseInt(arrayList.get(i));
			}
		}
		
		for(int i=0; i<a.length; i++){
			if(a[i] > result){
				result = a[i];
			}
		}
		
		System.out.println(result);
	}
}

 

 

       显然,第一个思路显得臃肿拖沓。后来结合网上的一些资料整理了下面的精简版,我觉得这段代码的边界处理的比较精巧,不简单。

package com.liuhao;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class MaxIncrease2 {

	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String str = br.readLine();
		
		char[] charArr = str.toCharArray();
		
		//用于存放最大的递增数
		int maxNum = 0;
		
		//str用做读入数据后边没用其他用处,就可以拿来放临时递增数
		str = "";
		
		for (int i=0; i<charArr.length; i++){
			
			//将当前i指向的字符存到字符串中
			if (str.length() ==0){
				str += charArr[i];
			}
			
			//题目巧合,恰好是比较一位的字符串,若是两位之上遍不可以直接比较字符
			//如果第二个大于第一个,将第二个也存放到str中
			//注意if的第一个条件 ***i < charArr.length-1***
			if (i < charArr.length-1 && charArr[i+1] > charArr[i]){
				str += charArr[i+1];
			}
			
			//若不满足,表明当前递增数结束
			//对该数进行比较,存储
			else {
				int temp = Integer.parseInt(str);
				if(temp > maxNum){
					maxNum = temp;
				}
				
				str = "";
			}
		}
		
		System.out.println(maxNum);
	}

}

 

0
0
分享到:
评论

相关推荐

    华为南京研究所机考练习-亮着电灯的盏数

    标题“华为南京研究所机考练习-亮着电灯的盏数”所指的是一场编程考试或面试题目,其中可能涉及到计算机科学中的算法和逻辑思维。这类问题通常要求编写程序来解决特定的问题,例如在这个例子中,可能是关于灯的状态...

    华为南京研究所机考练习-从考试成绩中划出及格线

    标题中的“华为南京研究所机考练习-从考试成绩中划出及格线”指的是一个编程练习,可能是华为在招聘或培训过程中对候选人进行的技术考核的一部分。这个练习可能要求考生编写程序,从一组考试成绩中自动确定及格分数...

    华为机考100道题-带答案(word文档)

    总的来说,【华为机考100题-带答案】是一份全面的复习资料,对于准备华为认证考试的考生而言,通过系统地练习和学习,可以有效地提升自己的技术水平和应试能力。同时,它也是检验自我学习成果和查漏补缺的良好工具。...

    华为机考试题练习汇总.txt

    华为机考练习试题汇总

    华为2022逻辑机考+华为_2020数字IC笔试题.rar

    华为作为全球知名的ICT解决方案提供商,其在电子设计与集成电路领域有着深厚的积累,每年都会举行针对FPGA(Field-Programmable Gate Array,现场可编程门阵列)和数字IC(Digital Integrated Circuits,数字集成...

    华为机考一本通-2024

    ### 华为机考一本通-2024:OD岗位与机考攻略详解 #### 一、华为OD岗位解析 ##### 1.1 OD岗位介绍 - **岗位性质**:OD岗位即华为与德科合作的精英研发项目,与传统外包项目不同,OD岗位在华为内部具有更高的地位和...

    华为机考试题+答案参照.pdf

    "华为机考试题+答案参照.pdf" 本资源是一个华为机考试题集,涵盖了多个IT领域的知识点,包括算法、数据结构、操作系统等。本文将对每个题目进行详细的解释和分析。 1. 评委打分问题: * 知识点:算法、数组操作 ...

    华为机考试题+答案.docx

    题目要求对输入数组进行排序,并根据数组长度的奇偶性将最大值放置于特定位置,随后按降序重新排列数组。 #### 代码分析: ```cpp #include void sort(int input[], int n, int output[]) { // 对输入数组进行...

    华为校招硬件技术工程师机考试卷试题包括答案.docx

    华为校招硬件技术工程师机考试卷试题包括答案.docx

    华为OD机考100题,真题

    ### 华为OD机考100题之五键键盘输出问题 #### 问题背景与描述 本题目属于算法设计类题目,旨在考察考生对于键盘输入处理的理解以及基本的编程能力。题目要求根据一系列给定的键盘输入指令,模拟一个特殊键盘的操作...

    华为机考练习攻略及注意事项

    华为机考练习攻略及注意事项

    华为 OD 机考攻略-加强版

    ### 华为OD机考攻略知识点详析 #### 一、机考介绍 - **考试形式**:华为OD机考采用在线形式,考试平台为牛客网。 - **试题构成**:考试包含三道算法题,其中两道简单题各占100分,一道中等难度题占200分,总分400...

    华为-热设计培训教材

    ### 华为-热设计培训教材知识点总结 #### 一、热设计基础知识 **1. 热量传递的三种基本方式** - **导热**:指物体内部或两个固体接触面上,由于微观粒子(如分子、原子或自由电子)的热运动而产生的热量传递现象...

    华为OD机考-统一考试机试-含ABCD卷-含java、c++、JavaScript、python-题目

    华为OD机考是华为公司针对求职者进行技术能力评估的一种方式,主要测试应聘者的编程技能。这个压缩包包含了四个部分,分别标记为ABCD卷,涵盖了四种编程语言:Java、C++、JavaScript和Python。这些语言在现代软件...

    华为校招硬件岗,电源岗笔试题8套91页

    ### 华为校招硬件岗,电源岗笔试题解析 #### 题目1:压敏电阻选型原则 **题目描述**:压敏电阻选型需满足:压敏电压 \(U_c &gt;\) 最大持续工作电压 \(U_{max} &gt;\) 额定工作电压 \(U_n\);绝不允许 \(U_c\) 低于被...

    华为OD机考100题(含答案).docx

    在准备华为OD机考的过程中,不仅要理解这些知识点,还要通过大量的练习来提高解题速度和准确性。在阅读和练习题目时,先尝试自己解决问题,然后再对照答案,这样可以更有效地评估自己的学习进度和理解程度。

    华为od机考2023试题

    【华为OD机考2023试题】涉及的IT知识点主要涵盖算法设计、字符串处理、游戏逻辑、日志管理、链表操作以及优化问题解决。下面将分别详细讲解这些知识点。 1. **任务混部问题**: 这是一道典型的资源调度优化问题,...

Global site tag (gtag.js) - Google Analytics