1295. 统计位数为偶数的数字
题目
解法一
遍历数组挨个判断元素位数并统计(我的第一想法)
class Solution {
public:int findNumbers(vector<int>& nums) {int result = 0;for(int n: nums){if(judge(n)) result++;}return result;}bool judge(int a){int sum = 1;a = a / 10;while(a != 0){sum++;a = a / 10;}return (sum % 2 == 0)?1:0;}
};
解法二
把数字转换成字符串,判断字符串长度
class Solution {
public:int findNumbers(vector<int>& nums) {int result = 0;for(int n: nums){std::string str = std::to_string(n);result += (str.length() % 2 == 0) ? 1 : 0;}return result;}};
解法三
使用log10
这里注意要加1,假设 log10(123) = 2.02 123实际上是三位,所以要加一
class Solution {
public:int findNumbers(vector<int>& nums) {int result = 0;for(int n: nums){result += (((int)log10(n) + 1) % 2 == 0) ? 1 : 0;}return result;}};