2016网易实习生招聘笔试题:已知一般App版本为1.0.0/1.0.1/1.2.3,其符合a.b.c的规则。将排序不规则,约为100w个版本号进行从小到大排序

来源:互联网 发布:linux 卸载u盘 编辑:程序博客网 时间:2024/04/30 14:02

如题目所说:已知一般App版本为1.0.0/1.0.1/1.2.3,其符合a.b.c的规则。将排序不规则,约为100w个版本号进行从小到大排序。本文是介绍的是一种对文件名进行排序的方法,文件名的格式为xxxxxxxx0.0.0.0xxxxxxxxxxx.txt的形式。其中xxxxxxx表示任意多个非数字类型的组合。0.0.0.0表示任意四个中间用点号连接的数字。比如:asadwddd0.0.0.2wefwefwefwefwf;dwefwefwefwef0.0.0.8sefergfwhgfoihrwefhrweh;fwfwfffw1.0.0.2wewevwevev;wqdwefwefwefwff0.0.0.1fefefwefwefwef(这四个文件是本案例用到的示例)。由于原理与网易面试题类似,只需将正则表达式的匹配规则稍微做一下修改,故在此与大家分享。

本题的关键分为:

1.对版本号字符串的处理,需要用到正则表达式。

2.版本号之间比较的规则,需要复写comparetor接口的compare()方法。

下面直接上代码












在E盘下建立ceshi文件夹,存放文章开头所列出的四个txt文件,运行程序结果如下:




DONE!

声明:本文参考文章http://rickqin.blog.51cto.com/1096449/1358610

再介绍一个版本号排序的开源项目version sorter,是用C写的。项目地址:https://github.com/github/version_sorter.git感兴趣的可以看一下。







1 0
原创粉丝点击