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++ int转string方法

    c++ int转string方法

    int 转string的方法,用到了特分享一下方便需要的朋友
    2013-01-01
  • C语言实现三子棋(井字棋)算法

    C语言实现三子棋(井字棋)算法

    这篇文章主要为大家详细介绍了C语言实现三子棋(井字棋)算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • MATLAB实现五子棋游戏(双人对战、可悔棋)

    MATLAB实现五子棋游戏(双人对战、可悔棋)

    这篇文章主要为大家详细介绍了MATLAB实现五子棋游戏,可以进行双人对战、也可悔棋,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • C++如何动态的生成对象详解

    C++如何动态的生成对象详解

    C++是不支持根据类名动态地生成对象的,比如从一个文本文件中读取类名然后构造一个对象.主要原因是没有丰富的动态元信息,没有单根类库。那么下面这篇文章就来给大家介绍C++是如何动态的生成对象,有需要的朋友们可以参考借鉴。
    2017-02-02
  • C++实现Linux下弹出U盘的方法

    C++实现Linux下弹出U盘的方法

    这篇文章主要介绍了C++实现Linux下弹出U盘的方法,实例分析了C++在Linux平台上进行IO操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • C/C++后端学习与练习深入

    C/C++后端学习与练习深入

    这篇文章主要介绍了C/C++对于后端的学习与练习,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • C++利用Socket实现主机间的UDP/TCP通信

    C++利用Socket实现主机间的UDP/TCP通信

    这篇文章主要为大家详细介绍了C++如何利用Socket实现主机间的UDP/TCP通信功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-01-01
  • C++学习之虚函数表与多态详解

    C++学习之虚函数表与多态详解

    这篇文章主要为大家详细介绍了C++中虚函数表与多态的相关知识,文中的示例代码讲解详细,对我们学习C++有一定的帮助,感兴趣的小伙伴可以了解一下
    2023-03-03
  • visual studio 2013中配置opencv图文教程 Opencv2.4.9安装配置教程

    visual studio 2013中配置opencv图文教程 Opencv2.4.9安装配置教程

    这篇文章主要为大家详细介绍了Opencv2.4.9安装教程,以及在visualstudio 2013中opencv的配置步骤,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • C++表达式new与delete知识详解

    C++表达式new与delete知识详解

    这篇文章主要为大家详细介绍了C++表达式new与delete知识点,学习如何动态创建对象,动态创建的对象与一般对象的区别,动态创建的对象的初始化以及释放动态分配的内存等知识点,感兴趣的朋友可以参考一下
    2016-05-05

最新评论