【LeetCode】判断一个数的数字计数是否等于数位的值 Java 题解
题目描述
给你一个下标从 0 开始长度为 n 的字符串 num ,它只包含数字。
如果对于 每个 0 <= i < n 的下标 i ,都满足数位 i 在 num 中出现了 num[i]次,那么请你返回 true ,否则返回 false 。
复制代码
思路分析
今天的算法题目是数组处理题目,题目比较简洁,不易懂。结合示例理解,索引 i 在 num 中出现了 num[i]次,则为 true, 不满足则为 false。
这个题目可以使用 hashMap, 通过遍历数组,统计数组值元素出现的次数。
我们在第二次遍历整个数组,比较索引 i 与 num[i] 是否相等。实现代码如下,供参考。
通过代码
复制代码
总结
上述算法的时间复杂度是 O(n), 空间复杂度是 O(n)
对于计数字符和数字出现的次数,除了 hashmap, 我们常常也使用数组统计,主要应用的 ASCII 码知识,其中 32~126(共 95 个)是字符(32 是空格),其中 48~57 为 0 到 9 十个阿拉伯数字。65~90 为 26 个大写英文字母,97~122 号为 26 个小写英文字母,其余为一些标点符号、运算符号等。
计数字符可以使用 ch - 'a' 来计算,计数数字可以使用 ch - '0'来记录,使用其他很方便。
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/5f42311f29750730f17aba33e】。文章转载请联系作者。
评论