Advertisement
Timkor

String reduction

Aug 30th, 2021 (edited)
917
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // https://www.codewars.com/kata/59fab1f0c9fc0e7cd4000072/train/javascript
  2. function solve(checked, target) {
  3.     let checkedLetterAmountTable = {} // створимо мапу (так, в js це об'єкт) для перевіряємого рядка
  4.     for (let i = 0; i < checked.length; i++) { // заповнимо її
  5.         if (checkedLetterAmountTable[checked[i]]) {
  6.             checkedLetterAmountTable[checked[i]]++;
  7.         } else {
  8.             checkedLetterAmountTable[checked[i]] = 1;
  9.         }
  10.     }
  11.  
  12.     let targetLetterAmountTable = {} // для цільового теж саме - цільову мапу
  13.     for (let i = 0; i < target.length; i++) {
  14.         if (targetLetterAmountTable[target[i]]) {
  15.             targetLetterAmountTable[target[i]]++;
  16.         } else {
  17.             targetLetterAmountTable[target[i]] = 1;
  18.         }
  19.     }
  20.  
  21.     console.log(checkedLetterAmountTable);
  22.     console.log(targetLetterAmountTable);
  23.  
  24.     let counter = 0;
  25.     for (letter in checkedLetterAmountTable) { // так переберемо всі літери перевіряємого рядка, точніше всі ключі мапи
  26.         if (targetLetterAmountTable[letter]) { // якщо є такий ключ в цільовій мапі
  27.             if (checkedLetterAmountTable[letter] < targetLetterAmountTable[letter]) { // якщо кількість літер в перевіряємому менше ніж в таргеті
  28.                 return 0; // не шмагла  
  29.             } else { // якщо в таргеті не більше, то полічимо на скільки, тобто скільки треба видалити з перевіряємого
  30.                 counter += (checkedLetterAmountTable[letter] - targetLetterAmountTable[letter])
  31.                 console.log(counter);
  32.             }
  33.         } else { // якщо ж в таргеті взагалі немає ключа (літери) то потрібно видалити всю кількість поточної літери з перевіряємого
  34.             counter += checkedLetterAmountTable[letter];
  35.             console.log(counter);
  36.         }
  37.     }
  38.     console.log(counter);
  39.     return counter;
  40. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement