求最大递增数

描述:

输入一串数字,找到其中包含的最大递增数。递增数是指相邻的数位从小到大排列的数字。如: 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 -求最大递增数相关推荐

  1. 华为南研所机考练习2-计算麻将的番数

    计算麻将的番数 描述: 计算麻将的番数 麻将游戏越来越受到大家喜爱,也在网络上盛行.本题目是给定一组已经和牌的麻将,编写一个函数计算这组麻将的番数.为简化题目,假设麻将只有筒子和条子两种花型,能翻番的 ...

  2. 2014华为南研所实习生求职

    这篇文章来的有点晚,当时候找华为实习的时间大概是2014年的4月份,当时本来是不打算写的,但是今天心血来潮就写下了,给希望进华为的同学有点小小的经历上的参考.这篇文章是2014年春华为南研所招聘实习的 ...

  3. 奔三之际,任性一把 ——从华为南研所裸辞后的一些体会和感想

    点击上方"程序人生",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 「国际惯例」有一阵子了,最近尚算清闲,写写裸辞后的一些体会和感想. 关于离开 知乎 ...

  4. 华为南研所提前批面试(2015年8月22日)

    华为南研所提前批面试时间是8.20-8.22号.我收到的通知是8.22中午11点.但根据前两天同学汇报的情况一般都会拖晚一点,有些甚至到下午才能面到.所以楼主也是做好心里准备去的.但出乎意料,11:2 ...

  5. 华为软件类校招 2014年9月3日 熟悉机考环境 1.记票统计 2.求最大递增数 3.Word Maze(单词迷宫)

    (样题,已对外公布)记票统计 描述: 模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用"A"."B"."C"." ...

  6. 2014年华为南研所校园招聘---机试+面试

    转载:http://blog.csdn.net/danie228/article/details/10070059 2013.8.11号参加华为的软件类上机考试,共三道题,第一题60分,第二题100分 ...

  7. 2015华为南研所校园招聘笔试面试经历

    中兴一面刚面完,二面估计要等五天左右才通知,今天闲的无聊总结一下之前华为的笔试面试经历. 本人小硕一枚,成绩略渣,华为投的是软件测试岗. 今天四月份的时候参加了华为实习生招聘,感觉自己特别幸运,机试考 ...

  8. 华为南研所2015年面试经历总结

    先简单介绍一下情况,自己目前是南京东南大学计算机学院的大四学生,参加的是华为2015年校园招聘的提前批次.现在还在实习当中,所以是白天公司实习,晚上准备秋招. 终于将华为的面试结束了,作为大三上学期找 ...

  9. 华为硬件工程师社招机考题库_【华为硬件开发工程师面试】第一轮机考,在华为南研所-看准网...

    1. PPT介绍个人经历 2. 综合面试 3. 专业性强,问得很细 第一部分:坐下来之后,面试官说你先自我介绍吧.当我介绍到我担任某个社团的负责人时,她打断了我,开始详细讨论这块的内容.这里的主线问题 ...

最新文章

  1. 注意了,又有企业因BTC费用高转向BCH
  2. Struts2中的struts.multipart.saveDir的配置
  3. goahead如何使用cgi服务_北斗导航系统现已提供全球服务!你知道如何使用这个服务吗?...
  4. Sybase中字符串替换函数 STR REPLACE
  5. Hi3516A开发--使用root模式登录Ubuntu14.04
  6. Maven不会吮吸。 。 。 但是Maven文件会
  7. python中缩进在程序中_有没有办法将Python代码中的缩进转换为大括号?
  8. Java 算法 开心的金明
  9. 《zabbix_agent客户端的添加》-5
  10. 【Unity3D】2D动画
  11. Multisim里导入没有的元器件(以NPN型三极管2N9013为例)
  12. 视觉中国:阶段性内部整改测试已结束,网站并未上线;易通贷平台因涉嫌非法吸收公众存款被立案侦查|嘟头条...
  13. 如何下载网页中的背景图片
  14. 下载软件时的X86和X64的区别
  15. python除法程序_Python中的除法
  16. NPM install报错certificate has expired
  17. 【5G/4G】NAS与AS层 完整性保护与加密算法系列文章
  18. HTML5基础(五)零基础入门 (上)
  19. php画梯形,科学网—梯形法误差 - 张江敏的博文
  20. 产品经理那些事:产品经理五年后的成长

热门文章

  1. ClassNames
  2. 静态路由和默认路由的原理与基础配置命令
  3. PMP : PMP备考心得 (8)
  4. 12个开源的后台管理系统
  5. 高并发系统设计:消息队列的三大作用:削峰填谷、异步处理、模块解耦
  6. 树莓派学习笔记——Wifi AP热点模式 使用RT5370
  7. MoveIT和KDL中进行机械臂位置和姿态插值
  8. [内网渗透]—权限维持
  9. 【C++】全局变量定义在哪里合适
  10. 常见问题及解决方法1