split - 拆分数字并在左侧添加零
问题描述
首先,将 0 附加到结果数字上,直到长度是输入数字的倍数( fx int a = 3
-> 数字的长度应该是数字 3 的倍数)。然后我必须将数字分成长度的部分a
(即3
)。
例如:
int a = 3
和号码开头:9056737152
如果数字在没有前导零的情况下拆分,则结果部分之一的长度将为 1:
9056737152 -> 905 673 715 2
因为1 <> a
,需要将零添加到左侧,直到拆分导致所有部分的长度为a
,即
009056737152 -> 009 056 737 152
009056737152 -> 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 代表十进制,这意味着下一个参数应该是一个整数值,例如字节、字符、短、整数或长。
我需要将 04 (从格式 - "%04d"
)更改为我的整数a
。
解决方案
这是我使用 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)
});
}
希望,它可以帮助你。
推荐阅读
- ruby-on-rails - 如何获取 Paypal 交易 ID 并在 ruby on rails 中退款
- arrays - Ngfor 的问题仅支持绑定到可迭代对象,例如数组
- css - 如何将boostrap 4下拉菜单修复到外部
- google-apps-script - 将数据从一张电子表格复制到另一张电子表格
- typescript - 如何配置 typescript 以使用 webpack 的 resolve.modules
- php - mywebsite.com/HOME 重定向不起作用
- laravel - 在 laravel 5.7 中安装灯塔
- reactjs - 我正在尝试使用选择,并且我正在使用 material-ui 示例
- java - 单击过滤的 RecyclerView 项目时显示错误数据
- python - 熊猫用 nan 计算 2 列的不同组合