1. 程式人生 > 其它 >力扣1903、字串中的最大奇數

力扣1903、字串中的最大奇數

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         return
num.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         return
num; 7 }