日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BM22 比较版本号

發布時間:2024/9/21 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BM22 比较版本号 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

描述

牛客項目發布項目版本時會有版本號,比如1.02.11,2.14.4等等

現在給你2個版本號version1和version2,請你比較他們的大小

版本號是由修訂號組成,修訂號與修訂號之間由一個"."連接。1個修訂號可能有多位數字組成,修訂號可能包含前導0,且是合法的。例如,1.02.11,0.1,0.2都是合法的版本號

每個版本號至少包含1個修訂號。

修訂號從左到右編號,下標從0開始,最左邊的修訂號下標為0,下一個修訂號下標為1,以此類推。

比較規則:

一. 比較版本號時,請按從左到右的順序依次比較它們的修訂號。比較修訂號時,只需比較忽略任何前導零后的整數值。比如"0.1"和"0.01"的版本號是相等的

二. 如果版本號沒有指定某個下標處的修訂號,則該修訂號視為0。例如,"1.1"的版本號小于"1.1.1"。因為"1.1"的版本號相當于"1.1.0",第3位修訂號的下標為0,小于1

三.? version1?>?version2?返回1,如果?version1?<?version2?返回-1,不然返回0.

數據范圍:

1 <= version1.length, version2.length <= 10001<=version1.length,version2.length<=1000

version1?和?version2?的修訂號不會超過int的表達范圍,即不超過?32 位整數?的范圍


進階: 空間復雜度?O(1)?, 時間復雜度?O(n)

示例1

輸入:

"1.1","2.1"

返回值:

-1

說明:

version1 中下標為 0 的修訂號是 "1",version2 中下標為 0 的修訂號是 "2" 。1 < 2,所以 version1 < version2,返回-1

示例2

輸入:

"1.1","1.01"

返回值:

0

說明:

version2忽略前導0,為"1.1",和version相同,返回0

示例3

輸入:

"1.1","1.1.1"

返回值:

-1

說明:

"1.1"的版本號小于"1.1.1"。因為"1.1"的版本號相當于"1.1.0",第3位修訂號的下標為0,小于1,所以version1 < version2,返回-1

示例4

輸入:

"2.0.1","2"

返回值:

1

說明:

version1的下標2>version2的下標2,返回1

示例5

輸入:

"0.226","0.36"

返回值:

1

說明:

226>36,version1的下標2>version2的下標2,返回1

方法一

兩個字符串按“.”分割后分別存入兩個字符串數組,先對字符串數組轉化成整數,然后遍歷比較兩個字符串數組。

時間復雜度o(max(m,n))? 空間復雜度o(max(m,n))

import java.util.*;public class Solution {/*** 代碼中的類名、方法名、參數名已經指定,請勿修改,直接返回方法規定的值即可** 比較版本號* @param version1 string字符串 * @param version2 string字符串 * @return int整型*/public int compare (String version1, String version2) {// write code here//分割版本,然后進行比較String[] st1=version1.split("\\.");String[] st2=version2.split("\\.");int len1=st1.length;int len2=st2.length;int l1=0,l2=0;while(l1<len1&&l2<len2){int n1=Integer.valueOf(st1[l1]);int n2=Integer.valueOf(st2[l2]);if(n1>n2){return 1;}else if(n1<n2){return -1;}l1++;l2++;}while(l1<len1){//剩余的哪個版本,觀察是否有大于0的值,如果有則該版本大int n1=Integer.valueOf(st1[l1]);if(n1>0){return 1;}l1++;}while(l2<len2){ //剩余的哪個版本,觀察是否有大于0的值,如果有則該版本大int n2=Integer.valueOf(st2[l2]);if(n2>0){return-1;}l2++;}return 0;} }

方法二

直接在兩個字符串進行比較,不申請空間內存,兩個字符串都以每個“.”為段的字符串進行轉化成整數,化為整數后然后進行比較大小

時間復雜度o(max(m,n))? 空間復雜度o(1)

/*** 代碼中的類名、方法名、參數名已經指定,請勿修改,直接返回方法規定的值即可** 比較版本號* @param version1 string字符串 * @param version2 string字符串 * @return int整型** C語言聲明定義全局變量請加上static,防止重復定義*/ int compare(char* version1, char* version2 ) {// write code herechar* p=version1;char* q=version2;//兩個指針while(*p!=0||*q!=0){ //當其中一個不為空時,另一個為空的片段的值始終為0int n1=0,n2=0;while(*p!=0&&*p!='.'){ //p以每個“.”為斷開的字符串片段進行整數計算n1=n1*10+(*p-'0');p++;}while(*q!=0&&*q!='.'){ //q以每個“.”為斷開的字符串片段進行整數計算n2=n2*10+(*q-'0');q++;}if(n1>n2){return 1;}else if(n1<n2){return -1;}if(*p!=0){ //p指針沒有指向空時p++; }if(*q!=0){//q指針沒有指向空時q++; }}return 0;}

總結

以上是生活随笔為你收集整理的BM22 比较版本号的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。