Javascript 最大三位数的总和
Javascript greatest sum of triple digits
本文关键字:三位数 Javascript 更新时间:2023-09-26
我想用javascript编写一个函数,它计算给定正数的3个连续数字的最大和。
例如,124999012计算 27。
我已经编写了一个计算数字数字之和的函数:
function sumDigits(n)
{
var str = n.toString();
var result = 0;
for(var i = 0; i < str.length; i++)
{
result = result + parseInt(str.charAt(i));
}
return result;
}
我有点无聊,所以我也做了自己的算法。这是我的解决方案:
function sumDigits(n) {
return Math.max.apply(null, Array.prototype.map.call("" + n, function (s, ix) {
return [+s, +n.toString()[ix + 1], +n.toString()[ix + 2]]
.reduce(function (prev, curr) { return prev + (curr || 0) });
}));
}
当然,还有小提琴。
循序渐进:
1) 将数组转换为三个元素的数组,当前元素和接下来的 2 个元素:
Array.prototype.map.call(n.toString(), function (s, ix) {
return [+s, +n.toString()[ix + 1], +n.toString()[ix + 2]];
});
2) 获取数组中每个项目的三个元素的总和:
item.reduce(function (prev, curr) { return prev + (curr || 0) });
对于数组的最后一个元素,curr
将未定义,因此可以将其转换为 0
。
3) 获取最后一个数组的max
:
Math.max.apply(null, array);
就是这样!
你可以做这样的事情:
function sumDigits(number)
{
var numberString = "" + number;
var max = -1;
for(var i = 0; i < numberString.length - 3; i++)
{
var number1 = parseInt(numberString.charAt(i));
var number2 = parseInt(numberString.charAt(i + 1));
var number3 = parseInt(numberString.charAt(i + 2));
var tempTotal = number1 + number2 + number3;
if(tempTotal > max)
{
max = tempTotal;
}
}
window.alert("" + max);
return max;
}
您可以从前三位数字开始并循环播放,直到您测试了 3 个连续数字的每个组合。 只需将 3 个数字相加,如果它大于当前最大值,则将当前最大值设置为温度值。
你会想要这样的东西,它使用Array.splice
和Math.max
function highestNum(n){
var arr = [], nArr = (n+"").split("");
while(nArr.length > 0)
arr.push(nArr.splice(0,3).reduce(function(t, c){ return +t + +c }, 0));
return Math.max.apply(null, arr);
}
它所做的是,首先它将数字转换为字符串,然后使用 Array.splice
,您将数组拆分为 3 个元素的片段,然后使用 Array.reduce
获取您在另一个数组中推送的这三个数字的总和。然后使用 Math.max
和 Function.apply
来获取使用 return
运算符返回的最大值。
function sumDigits(n)
{
var str = n.toString();
var result = 0;
var temp=0;
//for safety check length of the string
// if it is not longer than 3 characters then just sum them up and return
if (str.length<=3)
{
for(var i = 0; i < Math.Min(3,str.length); i++)
result += parseInt(str.charAt(i));
}
else
{
//now look for biggest 3 consecutive numbers,
//you wanna sum up 3 digits starting at index 0, and compare it with the max value you have calculated so far
for(var i = 0; i < str.length-3; i++)
{
//calculate the sum of 3 consecutive numbers starting at index i
temp = parseInt(str.charAt(i)) + parseInt(str.charAt(i+1)) + parseInt(str.charAt(i+2));
//compare it to the current max, if it is greater than the current max, set it as the result
if (temp>result)
result = temp;
}
}
return result;
}
这可能是正则表达式可以正常工作的情况。我不是正则表达式专家,有人可能会指出这样做的地板?
爪哇语
var num = 12224999011112,
matches = num.toString().match(/(.)'1{2}/g),
sum = 0;
if (matches) {
sum = Math.max.apply(null, matches).toString().charAt() * 3;
}
document.body.appendChild(document.createTextNode(sum));
首先,将数字转换为字符串,以便您可以使用正则表达式。然后,我们匹配具有 3 个并发字符的所有实例。如果我们有任何匹配项,那么我们选择数学上最大的。我们将其转换为字符串,取第一个字符并将其乘以 3。
相关文章:
- javascript第三个XMLHttpRequest被拒绝.但前两个是允许的
- 用于Javascript中小数输入的Regex,小数前有1到3位,小数后有1到三位
- 如何替换javascript字符串中的前三个连字符
- Javascript平等三重等于,但是大于和小于呢?
- 匹配三个正则表达式中的任意一个,以先到的为准(在javascript中)
- Javascript 正则表达式匹配字母数字,其中数字不限于一位数
- 我需要帮助查找我的JavaScript小游戏中的错误(三个我没有得到的错误)
- 使用 jquery 或 JavaScript 从 URL 获取具有三括号的 JSON 数据
- 如何在javascript中将类添加到第三个
- 元素
- Javascript:如果有三个变量
- 在 Body Onload 上调用三个 Javascript 函数
- 如何告诉三个Javascript对象所有内容都已加载
- Javascript 最大三位数的总和
- 三个JavaScript在推动网格时的奇怪行为
- 使用第三个Javascript文件将JSTL传递给Javascript函数
- 如何使用这三个JavaScript函数参数
- 在Javascript中将数字转换为三位数的列表
- 如何在一个文本框中打印两位数到99和三位数999到100 ?
- 在三个javascript结果的前两个中添加图像
- 我需要使用三个javascript库验证与ASP.净MVC4