javascript - Javascript - 计算没有重复数字的数字 -- leetcode 1012. 有重复数字的数字
问题描述
https://leetcode.com/problems/numbers-with-repeated-digits/
给定一个正整数 N,返回小于或等于 N 且至少有 1 个重复数字的正整数的个数。
示例 1:
输入:20 输出:1 解释:唯一至少有 1 个重复数字的正数(<= 20)是 11。示例 2:
输入:100 输出:10 解释:至少有 1 个重复数字的正数(<= 100)分别是 11、22、33、44、55、66、77、88、99 和 100。示例 3:
输入:1000 输出:262
笔记:
1 <= N <= 10^9
https://leetcode.com/problems/numbers-with-repeated-digits/discuss/256725/JavaPython-Count-the-Number-Without-Repeated-Digit 我发现这个解决方案有很多人喜欢。但它是用 Java/Python 编码的。任何人都可以帮助使用 Javascript 通过类似的逻辑对其进行编码。非常感谢...
python 解决方案:我不知道 set() 部分如何,如何使用 Javascript 来完成。
def numDupDigitsAtMostN(self, N): L = map(int, str(N + 1)) res, n = 0, len(L)
def A(m, n):
return 1 if n == 0 else A(m, n - 1) * (m - n + 1)
for i in range(1, n): res += 9 * A(9, i - 1)
s = set()
for i, x in enumerate(L):
for y in range(0 if i else 1, x):
if y not in s:
res += A(9 - i, n - i - 1)
if x in s: break
s.add(x)
return N - res
解决方案
虽然我无法翻译 python,但我认为您需要做的是将整数分解为 char 数组,因此 100 将变为 ["1","0","0"],并从第一个开始进行比较element (array[0]) 到最后一个元素,以查看是否有任何 char 相同。
这是我做的一个快速功能..也许它会比python运行得慢,但它应该可以完成这项工作:
var result = [];
function x(n) {
for (var i = 0; i <= n; i++){
var nStr = i.toString();
var nStrArr = nStr.split('');
if(nStrArr.length > 1){
for(var j = 0; j < nStrArr.length; j++){
var idx = nStrArr.findIndex(x => x === nStrArr[j]);
if(idx >= 0 && idx !== j){
result.push(parseInt(i));
break;
}
}
}
}
console.log(result); //should list all the numbers with at least 1 repeated digit
console.log(result.length); //length of the array
}
x(1000);
推荐阅读
- javacard - 为什么 DELETE Key APDU 命令返回 6A80 状态字?
- sql-server - 在集中式系统中部署连接到 SQL Server 的 Winforms 应用程序
- file - 将使用相机包拍摄的图像添加到 pdf
- python - 我的问题是登录的messagpopbox被尽快调用我打开框架
- sql - 如何在 Sqlite 中使用时间序列和快速时间范围查询?
- python-3.x - 如何计算出生日期,给定年龄,以年,月,日表示,在给定日期报告?
- amazon-s3 - 如何将 S3 存储桶中的音频文件直接提供给 Google 语音到文本
- javascript - 在适当的 javascript 行为中
- python - For 循环遍历 Python 中的列表
- java - 我不能在动态创建的视图中使用 onClick