当前位置: 首页 > article >正文

力扣经典题目之2283. 判断一个数的数字计数是否等于数位的值

今天继续给大家分享一道力扣的做题心得今天这道题目是

题目链接:

2283. 判断一个数的数字计数是否等于数位的值

题目如下:

给你一个下标从 0 开始长度为 n 的字符串 num ,它只包含数字。

如果对于 每个 0 <= i < n 的下标 i ,都满足数位 i 在 num 中出现了 num[i]次,那么请你返回 true ,否则返回 false 。


1,题目分析

此题解题代码不难,但是在题目理解上有一些难点,下面是理解题目的要点。

要点:

        根据题目的给出例子可以看到我们是需要确定再给出的这个数字数组中数组的索引出现了对应的 num[ i ] 次的次数,注意对应关系以及是必须要出现的是对应的次数多了或者少了都不可以,如果满足上述要求则返回true,否则返回false即可,下面是题目所给出的一个比较直观的展示题目要求的例子

示例 1:  输入:num = "1210" 输出:true

解释: num[0] = '1' 。数字 0 在 num 中出现了一次。
num[1] = '2' 。数字 1 在 num 中出现了两次。
num[2] = '1' 。数字 2 在 num 中出现了一次。
num[3] = '0' 。数字 3 在 num 中出现了零次。
"1210" 满足题目要求条件,所以返回 true 。

2,解题思路

题解代码:

class Solution {
    private int[] f = new int[10];
    public boolean digitCount(String num) {
        int n = num.length();
        for (int i = 0; i < n; ++i) {
            f[num.charAt(i) - '0']++;
        }
        
        for (int i = 0; i < n; ++i) {
            if (f[i] != num.charAt(i) - '0') {
                return false;
            }
        }
        return true;
    }
}
  1. 理解问题

    • 输入是一个只包含数字的字符串 num
    • 对于每个下标 inum[i] 表示数位 i 在字符串中应该出现的次数。
    • 需要验证字符串中的每个数位是否满足这个条件。
  2. 使用数组统计数位出现次数

    • 创建一个长度为10的数组 f,用来统计每个数位(0到9)在字符串中实际出现的次数。
    • 遍历字符串 num,对于每个字符 num.charAt(i),将其转换为对应的整数(通过减去字符 '0'),然后在数组 f 中相应位置加1。
  3. 验证条件

    • 再次遍历字符串 num,对于每个下标 i,检查数组 f[i] 是否等于 num.charAt(i) - '0'
    • 如果有任何一个下标不满足条件,则返回 false
    • 如果所有下标都满足条件,则返回 true

    4,代码细节分析

  • 数组 f 的初始化int[] f = new int[10],数组的索引从0到9,分别对应数位0到9。
  • 字符转换为整数num.charAt(i) - '0' 将字符转换为对应的整数。例如,字符 '3' 减去 '0' 的结果是整数 3
  • 计数f[num.charAt(i) - '0']++ 增加对应数位的计数。
  • 验证条件if (f[i] != num.charAt(i) - '0') 检查每个下标 i 的条件是否满足。

 

3,总结

        感谢大家的阅读,希望这篇解题心得能为大家带来一些收获,我们共同进步!大家的点赞就是我的动力谢谢大家,还有什么更优解或者问题欢迎大家在评论区讨论分享!


http://www.kler.cn/a/471653.html

相关文章:

  • 什么是网络安全攻防演练,即红蓝对抗?
  • 【Web】0基础学Web—事件对象、事件委托(事件代理)——星级评论案例
  • 如何隐藏 Nginx 版本号 并自定义服务器信息,提升安全性
  • 5.1 数据库:INSERT 插入语句
  • Maven 详细配置:Maven 项目 POM 文件解读
  • 解密序列建模:理解 RNN、LSTM 和 Seq2Seq
  • [网络安全]DVWA之File Upload—AntSword(蚁剑)攻击姿势及解题详析合集
  • windows蓝屏以及windows补丁回滚
  • Solaris操作系统
  • JavaScript系列(12)-- 高阶函数应用
  • Spring5框架之SpringMVC
  • 记录一下Coding一直不能clone
  • 7_TypeScript Number --[深入浅出 TypeScript 测试]
  • Ae:合成设置 - 3D 渲染器
  • 除了RAII和智能指针,还有哪些资源管理机制?
  • Java设计模式 —— 【行为型模式】命令模式(Command Pattern) 详解
  • doris 2.1 Data Queries Common Table Expression UDF 学习笔记
  • 【LeetCode】4. 去重的效率提升
  • 基于CentOS的Docker + Nginx + Gitee + Jenkins部署总结(进阶)-- 接入钉钉通知功能
  • C# 对象和类型(结构)
  • GOAT‘S AI早鸟报Part9
  • 2019年IMO第2题
  • 深入解析Java 8中的Lambda表达式与函数式接口
  • MATLAB语言的数据结构
  • 【Javascript Day2】
  • 32单片机从入门到精通之数据处理——传感器接口(十二)