力扣1903、字串中的最大奇數
阿新 • • 發佈:2021-10-16
1、貪心+int判斷(24ms,54%;14.6MB,44%)
1 string largestOddNumber(string num) { 2 int len=num.size(); 3 for(int i=len-1;i>=0;i--){ 4 //-'0'相當於減0的ASCII碼48,將字串型轉成整型 5 //+'0'相當於加0的ASCII碼48,將整型轉成字串型 6 //沒有-’0’也一樣,因為奇數、偶數對應ASCII碼分別是奇數、偶數 7 if((num[i]-'0')%2==1) 8 //從num的0位擷取i+1位字元9 return num.substr(0,i+1); 10 } 11 return ""; 12 }
2、&判斷(20ms,82%;14.6MB,44%)
1 string largestOddNumber(string num) { 2 for(int i=num.size()-1;i>=0;i--){ 3 //因為奇數的二進位制末尾必定有1,進行邏輯與可得真 4 //有沒有-'0'不重要,因為奇數ASCII碼還是奇數 5 if(num[i]-'0'&1) 6 returnnum.substr(0,i+1); 7 } 8 return ""; 9 }
3、ASCII碼判斷(12ms,99%;13.5MB,97%)
1 string largestOddNumber(string num) { 2 //back()擷取字串最後一個字元,front()擷取第一個 3 //奇數、偶數對應的ASCII碼分別是奇數、偶數 4 //pop.back()刪除字串末尾的字元 5 while(num.size()&&num.back()%2==0) num.pop_back(); 6 returnnum; 7 }