拆分数字并在左侧添加零

时间:2018-05-18 19:50:28

标签: split add zero fold alternating

首先,将0附加到结果数字,直到长度是输入数字的倍数(f.x。int a = 3 - >数字的长度应该是数字3的倍数)。然后我必须将数字拆分为长度为a的部分(即3)。

例如:

int a = 3开头,号码:9056737152

如果在没有前导零的情况下拆分数字,则结果部分之一的长度为1:

9056737152 - > 905 673 715 2

1 <> a起,需要在左边添加零,直到拆分导致所有部分的长度为a,即

009056737152 - &gt; 009 056 737 152

009056737152 - &gt; 009(第1部分)056(第2部分)737(第3部分)152(第4部分

接下来,需要颠倒交替的部分,然后将所有部分加在一起。例如,撤消 2 4 部分:

251 + 737 + 650 + 009 = 1647

有什么想法吗?我迈出了第一步,尝试添加零:

int num = 5;
DecimalFormat df = new DecimalFormat("00000");
System.out.println(df.format(zahl));

问题是号码5不能是静态的。

另一种方法:

int number = 9;      
String str = String.format("%04d", 9);  // 0009      
System.out.printf("original number %d, numeric string with padding : %s", 9, str);
  • %表示它是格式化指令
  • 0是一个表示用零填充
  • 的标志
  • 4表示格式化字符串的长度。这将确保添加正确数量的零
  • d用于十进制,表示下一个参数应为整数值,例如byte,char,short,int或long。

我需要将04(从格式 - "%04d")更改为我的整数a

1 个答案:

答案 0 :(得分:0)

这里我的解决方案使用JS

const multiple = 3;
const number = 9056737152;
const strNumber = number.toString();
const zero = '0';

const needToAdd = multiple - strNumber.length % multiple;
const padded = zero.repeat(needToAdd).concat(strNumber);

const chunks = [];

for (let i = 0; i < padded.length / multiple; i++) {
  let chunk = padded.slice(i * multiple, (i + 1) * multiple);
  chunk = reverseString(chunk);
  chunks.push(chunk);
}

const sum = chunks.reduce((total, chunk) => {
  return total + parseInt(chunk, 10);
}, 0);

console.log(sum);

function reverseString(str) {
  const symbols = str.split('');
  symbols.reverse();

  return symbols.reduce((total, l) => {
    return total.concat(l)
  });
}

希望,它会帮助你。