华为南研所机考练习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);}}
华为南研所机考练习2 -求最大递增数相关推荐
- 华为南研所机考练习2-计算麻将的番数
计算麻将的番数 描述: 计算麻将的番数 麻将游戏越来越受到大家喜爱,也在网络上盛行.本题目是给定一组已经和牌的麻将,编写一个函数计算这组麻将的番数.为简化题目,假设麻将只有筒子和条子两种花型,能翻番的 ...
- 2014华为南研所实习生求职
这篇文章来的有点晚,当时候找华为实习的时间大概是2014年的4月份,当时本来是不打算写的,但是今天心血来潮就写下了,给希望进华为的同学有点小小的经历上的参考.这篇文章是2014年春华为南研所招聘实习的 ...
- 奔三之际,任性一把 ——从华为南研所裸辞后的一些体会和感想
点击上方"程序人生",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 「国际惯例」有一阵子了,最近尚算清闲,写写裸辞后的一些体会和感想. 关于离开 知乎 ...
- 华为南研所提前批面试(2015年8月22日)
华为南研所提前批面试时间是8.20-8.22号.我收到的通知是8.22中午11点.但根据前两天同学汇报的情况一般都会拖晚一点,有些甚至到下午才能面到.所以楼主也是做好心里准备去的.但出乎意料,11:2 ...
- 华为软件类校招 2014年9月3日 熟悉机考环境 1.记票统计 2.求最大递增数 3.Word Maze(单词迷宫)
(样题,已对外公布)记票统计 描述: 模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用"A"."B"."C"." ...
- 2014年华为南研所校园招聘---机试+面试
转载:http://blog.csdn.net/danie228/article/details/10070059 2013.8.11号参加华为的软件类上机考试,共三道题,第一题60分,第二题100分 ...
- 2015华为南研所校园招聘笔试面试经历
中兴一面刚面完,二面估计要等五天左右才通知,今天闲的无聊总结一下之前华为的笔试面试经历. 本人小硕一枚,成绩略渣,华为投的是软件测试岗. 今天四月份的时候参加了华为实习生招聘,感觉自己特别幸运,机试考 ...
- 华为南研所2015年面试经历总结
先简单介绍一下情况,自己目前是南京东南大学计算机学院的大四学生,参加的是华为2015年校园招聘的提前批次.现在还在实习当中,所以是白天公司实习,晚上准备秋招. 终于将华为的面试结束了,作为大三上学期找 ...
- 华为硬件工程师社招机考题库_【华为硬件开发工程师面试】第一轮机考,在华为南研所-看准网...
1. PPT介绍个人经历 2. 综合面试 3. 专业性强,问得很细 第一部分:坐下来之后,面试官说你先自我介绍吧.当我介绍到我担任某个社团的负责人时,她打断了我,开始详细讨论这块的内容.这里的主线问题 ...
最新文章
- 注意了,又有企业因BTC费用高转向BCH
- Struts2中的struts.multipart.saveDir的配置
- goahead如何使用cgi服务_北斗导航系统现已提供全球服务!你知道如何使用这个服务吗?...
- Sybase中字符串替换函数 STR REPLACE
- Hi3516A开发--使用root模式登录Ubuntu14.04
- Maven不会吮吸。 。 。 但是Maven文件会
- python中缩进在程序中_有没有办法将Python代码中的缩进转换为大括号?
- Java 算法 开心的金明
- 《zabbix_agent客户端的添加》-5
- 【Unity3D】2D动画
- Multisim里导入没有的元器件(以NPN型三极管2N9013为例)
- 视觉中国:阶段性内部整改测试已结束,网站并未上线;易通贷平台因涉嫌非法吸收公众存款被立案侦查|嘟头条...
- 如何下载网页中的背景图片
- 下载软件时的X86和X64的区别
- python除法程序_Python中的除法
- NPM install报错certificate has expired
- 【5G/4G】NAS与AS层 完整性保护与加密算法系列文章
- HTML5基础(五)零基础入门 (上)
- php画梯形,科学网—梯形法误差 - 张江敏的博文
- 产品经理那些事:产品经理五年后的成长