算起来有大概半年左右没碰过代码了吧,我本来也很菜,今天这个开始连复健都不能算,只能说是一个艰难的起步。
某二本师范大学软件工程应届生,考研失败,无项目经验,无实习经验,只有一颗执着于干开发的心,不想辜负自己当初填报高考志愿时的不服从调剂,感觉自己像个神经病一样。
我纠结了三天要怎么办,要学什么,学什么快,学什么好找工作,就业压力让我焦虑了三天,最后我还是决定,脚踏实地,踏踏实实的学会学好一种应用最广泛的语言。
我选择了Java,从头从最最基础的东西开始,都弄懂弄明白,从头开始慕课网学Java工程师的路径课程。同时,开始在leetcode上做题。
今天做了两道题。
其中一道题是今天线上笔试中做到的一道题,因为时间有限觉得考虑的很单一,结束后特意找了这题来做。
题目如下:
165. Compare Version Numbers—比较版本号
比较两个版本号 version1 和 version2。 如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。 你可以假设版本字符串非空,并且只包含数字和 . 字符。 . 字符不代表小数点,而是用于分隔数字序列。 例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。
示例 1: 输入: version1 = "0.1", version2 = "1.1" 输出: -1 示例 2: 输入: version1 = "1.0.1", version2 = "1" 输出: 1 示例 3: 输入: version1 = "7.5.2.4", version2 = "7.5.3" 输出: -1
最后提交通过的代码如下:
1 class Solution { 2 public int compareVersion(String version1, String version2) { 3 4 int v1,v2,temp=0; 5 6 //拆分字符串并赋给新的字符串数组 7 String[] ver1 = version1.split("\\."); 8 String[] ver2 = version2.split("\\."); 9 10 //把拆分的字符串转化成int分别进行比较 11 for(int i=0;(i<ver1.length)||(i<ver2.length);i++){ 12 if(i<ver1.length){ 13 v1 = Integer.parseInt(ver1[i]); 14 }else{v1=0;} 15 16 if(i<ver2.length){ 17 v2 = Integer.parseInt(ver2[i]); 18 }else{v2=0;} 19 20 if(v1>v2){temp=1;break;} 21 if(v1<v2){temp=-1;break;} 22 if(v1==v2){temp=0;} 23 } 24 return temp; 25 } 26 }
在线上笔试时,我只考虑了每个点分隔的数字都是单个数字的情况,当时我的想法是,单独比较每一位的大小,这样的话 1.13就会小于1.2,显然不对。
在leetcode提交果然没能通过,最终我使用了 String 类的 split(String regex) 方法,它的作用就是根据匹配给定的正则表达式来拆分字符串。在这道题中用到的正则表达式分隔符为 "\\."
浙公网安备 33010602011771号