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 }
浙公网安备 33010602011771号