/**
* 给你一个字符串 s ,根据下述规则反转字符串:
所有非英文字母保留在原有位置。
所有英文字母(小写或大写)位置反转。
返回反转后的 s 。
输入:"a-bC-dEf-gh8Ij"
输出:"j-Ih-gfE-dC8ba"
*/
// const checkStr = (s) => {
// return /[a-z]/i.test(s);
// }
// const reverseStr = (str) => {
// const arrStr = str.split('');
// const len = arrStr.length;
// let i = 0;
// let j = len - 1;
// while (i <= j) {
// if (checkStr(arrStr[i]) && checkStr(arrStr[j])) {
// [arrStr[i], arrStr[j]] = [arrStr[j], arrStr[i]];
// i += 1;
// j -= 1;
// } else {
// if (!checkStr(arrStr[i])) {
// i += 1;
// }
// if (!checkStr(arrStr[j])) {
// j -= 1;
// }
// }
// }
// return arrStr.join('');
// }
// console.log(reverseStr('[-bC-dEf-gh8Ij'));
/**
* 输入是两个已经超过js精度的数,输出是这两个数的和
* case1:'899879797987987','87987987987982'
*/
const bigNumberSum = (str1, str2) => {
const arr1 = str1.split('');
const arr2 = str2.split('');
const result = [];
let temp = 0;
const len1 = arr1.length;
const len2 = arr2.length;
const len = Math.max(len1, len2);
for (let i = 0; i < len; i++) {
const item1 = arr1[i];
const item2 = arr2[i];
if (item1 && item2) {
const sum = Number(item1) + Number(item2) + temp;
temp = (sum / 10) | 0
result.unshift(sum % 10);
} else {
if (item1 && temp) {
const sum = Number(item1) + temp;
temp = (sum / 10) | 0
result.unshift(sum % 10);
} else if (item2 && temp) {
if (item2 && temp) {
const sum = Number(item2) + temp;
temp = (sum / 10) | 0
result.unshift(sum % 10);
}
} else {
const target = item1 || item2;
result.unshift(Number(target));
}
}
}
if (temp) {
result.unshift(temp);
}
return result.join('');
}
console.log(bigNumberSum('99', '9'), 99 + 9)
console