Computer >> Máy Tính >  >> Lập trình >> Javascript

Xác định xem các số có tạo thành chuỗi cộng trong JavaScript hay không

Số phụ gia

Số cộng là một chuỗi số mà các chữ số của nó có thể tạo thành chuỗi cộng.

Một chuỗi phụ gia hợp lệ phải chứa ít nhất ba số. Ngoại trừ hai số đầu tiên, mỗi số tiếp theo trong dãy phải là tổng của hai số đứng trước. Cho một chuỗi chỉ chứa các chữ số '0' - '9', hãy viết một hàm để xác định xem đó có phải là một số cộng hay không.

Lưu ý - Các số trong dãy cộng không được có số 0 ở đầu, vì vậy dãy 1, 2, 03 hoặc 1, 02, 3 không hợp lệ.

Ví dụ -

Chuỗi "199100199" là số cộng bởi vì, Chuỗi cộng là - 1, 99, 100, 199 -

1 + 99 = 100, 99 + 100 = 199

Ví dụ

Mã cho điều này sẽ là -

const str = "199100199";
const isAdditiveNumber = (numStr) => {
   if(numStr.length < 3) return false;
   let str = "";
   let seen = true;
   for(let i = numStr.length − 1; i > 1; i−−){
      str = `${numStr[i]}${str}`;
      if(numStr[i] === "0") continue;
      let s = str;
      let s2 = numStr[i − 1]
      for(let j = i − 2; j >= 0; j−−){
         if(`${s2}`.startsWith("0") && s2.length > 1){
            s2 = `${numStr[j]}${s2}` seen = false;
         } else if(parseInt(s) >= parseInt(s2)){
            let diff = s − s2;
            if(numStr.slice(0, j + 1).endsWith(diff)){
               s = s2;
               s2 = diff;
               let ind = Math.floor(Math.log10(diff));
               ind = ind < 0 ? 0 : ind
               j −= ind;
               seen = true;
            }else {
               s2 = `${numStr[j]}${s2}`
               seen = false;
            }
         }else{
            seen = false;
            break;
         }
      }
      if(seen) return seen;
   };
   return seen;
};
console.log(isAdditiveNumber(str));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

true