精華區beta Marginalman 關於我們 聯絡資訊
你版剩我不什麼split 只能一個個慢慢比較了 寫出一堆垃圾code 紫砂 思路: 就以'.'為分界去計算version的大小 cnt=cnt*10+(int)(version[i]-'0') 阿如果是leading 0就略過 如果現在的數字>0,就不要掠過0 就算有一個version到底也不要跳出,要去看另外一個version還有沒有值 C code : int compareVersion(char* version1, char* version2) { int idx1=0,idx2=0,n=strlen(version1),m=strlen(version2); while(idx1<n || idx2<m){ int cnt1=0,cnt2=0; while(idx1<n && version1[idx1]!='.'){ if (cnt1>0 || version1[idx1]!='0'){ cnt1=cnt1*10+(int)(version1[idx1]-'0'); } idx1++; } while(idx2<m && version2[idx2]!='.'){ if (cnt2>0 || version2[idx2]!='0'){ cnt2=cnt2*10+(int)(version2[idx2]-'0'); } idx2++; } idx1++; idx2++; if (cnt1>cnt2){ return 1; }else if (cnt2>cnt1){ return -1; } } return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.11.31 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1714737524.A.52D.html
DJYOSHITAKA: 別捲了 05/03 19:58
JIWP: 我從早上想到現在= = 05/03 20:00
digua: 大師 05/03 20:00
wu10200512: 用C卷 太狠了== 05/03 20:01
JIWP: 姑姑魯:( 05/03 20:02
digua: 為啥你有時候會換用c寫 05/03 20:03
argorok: 別捲了 05/03 20:07
sustainer123: 你是大師 05/03 20:22