C/C++题解LeetCode1295统计位数为偶数的数字

 更新时间:2023年01月03日 10:49:00   作者:刘09k11  
这篇文章主要为大家介绍了C/C++题解LeetCode1295统计位数为偶数的数字示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

题目描述

1295. 统计位数为偶数的数字 - 力扣(LeetCode)

给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。

示例 1:

输入:nums = [12,345,2,6,7896]
输出:2
解释:
12 是 2 位数字(位数为偶数) 
345 是 3 位数字(位数为奇数)  
2 是 1 位数字(位数为奇数) 
6 是 1 位数字 位数为奇数) 
7896 是 4 位数字(位数为偶数)  
因此只有 12 和 7896 是位数为偶数的数字

示例 2:

输入:nums = [555,901,482,1771]
输出:1 
解释: 
只有 1771 是位数为偶数的数字。

提示:

1 <= nums.length <= 500

1 <= nums[i] <= 10^5

思路分析

题目要求是十进制数求位数,所以最先想到的思路就是依次除进制数10取商,然后再除,获取到做除法的次数即为位数

此处可以使用递归,也可以使用for循环, 如果是其他进制数,只需要修改结束条件和除数

题目给的条件 1< num < 10^5, 所以最多循环五次,不用考虑性能问题导致时间超时

默认位数是值1 递归结束条件就是 是否 < 10,递归体就是将当前位和之前的位数求和.求解即可

利用to_string函数可以将整数转换成字符串

然后用string类自带的求长度函数可以求出有几位

然后直接对2求余就知道是奇数还是偶数了。

AC 代码

class Solution {
public:
    int getLengthOfNumber (int num) {
    int lenght = 1;
    if (num < 10) {
        return lenght;
    }
    num = num / 10;
    lenght =  getLengthOfNumber(num) + lenght;
    return lenght;
}
    int findNumbers(vector<int>& nums) {
        int num = 0;
        int length = (int)nums.size();
        for (int i = 0 ; i < length; i++) {
            int length = getLengthOfNumber(nums[i]);
            if (length % 2 == 0) {
                num++;
            }
        }
        return num;
    }
};
class Solution {
public:
    int findNumbers(vector<int>& nums) {
        int count = 0;
        for(auto v : nums)
        {
            string x = to_string(v);
            if(x.size()%2 == 0)
                count++;
        }
        return count;
    }
};

将int转为String

调用.length,然后%2==0即为偶数 - 统计位数为偶数的数字

代码

class Solution {
    public int findNumbers(int[] nums) {
        int res=0;
        for(int i:nums){
            if(String.valueOf(i).length()%2==0){
                res++;
            }
        }
​​​​​​​        return res;
    }
}

3种方法 - 统计位数为偶数的数字

1. 把数字转成字符串

public int findNumbers(int[] nums) {
    int count = 0;
    for (int i = 0; i < nums.length; i++) {
        if (String.valueOf(nums[i]).length() % 2 == 0) {
            count++;
        }
    }
    return count;
}

2. 数字循环除10,统计等于0的时候除10的次数,偶数次则该数为偶数位

public int findNumbers(int[] nums) {
    int count = 0;
    for (int i = 0; i < nums.length; i++) {
        int N = nums[i];
        //记录除10的次数
        int countTen = 0;
        while (N != 0) {
            N/=10;
            countTen++;
        }
        //如果除10的次数是偶数次,则该数为偶数位数
        if (countTen % 2 == 0) {
            count++;
        }
    }
    return count;
}

3. 已知范围为1 <= nums[i] <= 10^5,所以只有两个区间内的数为偶数位10~99以及1000~9999

public int findNumbers(int[] nums) {
    int count=0;
    for(int i=0;i<nums.length;++i){
        if((nums[i]>=10&&nums[i]<100)||(nums[i]>=1000&&nums[i]<10000))
            count++;
    }
    return count;        
}

以上就是C/C++题解LeetCode1295统计位数为偶数的数字的详细内容,更多关于C/C++统计位数为偶数字的资料请关注脚本之家其它相关文章!

相关文章

  • c++查询最短路径示例

    c++查询最短路径示例

    这篇文章主要介绍了c++查询最短路径示例,需要的朋友可以参考下
    2014-05-05
  • C++ 情怀游戏扫雷的实现流程详解

    C++ 情怀游戏扫雷的实现流程详解

    扫雷是电脑上很经典很经典的传统老游戏,从小编第一次摸到计算机开始就玩过扫雷,虽然当时并不理解玩法原理,但终是第一次玩电脑游戏,下面来从扫雷的前世今生讲起
    2021-11-11
  • 与ASCII码相关的C语言字符串操作函数

    与ASCII码相关的C语言字符串操作函数

    这篇文章主要介绍了与ASCII码相关的C语言字符串操作函数,分别是将字符转换为ASCII码的toascii()函数和根据ASCII码进行字符串比较的strcoll()函数,需要的朋友可以参考下
    2015-08-08
  • C和C++中argc和argv的含义及用法详解

    C和C++中argc和argv的含义及用法详解

    argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,这篇文章主要介绍了C和C++中argc和argv的含义以及用法,需要的朋友可以参考下
    2022-11-11
  • Qt创建SQlite数据库的示例代码

    Qt创建SQlite数据库的示例代码

    本文主要介绍了Qt创建SQlite数据库的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 浅谈C++中对象的复制与对象之间的相互赋值

    浅谈C++中对象的复制与对象之间的相互赋值

    这篇文章主要介绍了浅谈C++中对象的复制与对象之间的相互赋值,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • 深入浅出理解C语言初识结构体

    深入浅出理解C语言初识结构体

    C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许你存储不同类型的数据项,本篇让我们来了解C 的结构体
    2022-02-02
  • C语言 数据类型详细介绍

    C语言 数据类型详细介绍

    本文主要讲解C语言 数据类型,这里整理了详细的数据类型的资料,希望能帮助刚刚开始学习C语言的同学
    2016-08-08
  • 基于C语言指令的深入分析

    基于C语言指令的深入分析

    本篇文章是对C语言的指令进行了详细的分析与介绍,需要的朋友参考下
    2013-05-05
  • c++ 深入理解归并排序的用法

    c++ 深入理解归并排序的用法

    归并排序是典型分治思想的代表——首先把原问题分解为两个或多个子问题,然后求解子问题的解,最后使用子问题的解来构造出原问题的解
    2022-03-03

最新评论