Функция JavaScript получает две строки и возвращает n - PullRequest
0 голосов
/ 26 октября 2019

Я пытался выполнить эту задачу недавно, но безуспешно, перепробовал много способов, но по некоторым причинам мне не удалось завершить все приведенные ниже примеры.

Буду признателен, если кто-то сможетпомогите мне с этим, покажите мне шаг за шагом.

Напишите функцию, которая получает две строки и возвращает n, где n равно числу символов, которые мы должны сдвинуть первой строкой вперед, чтобы соответствоватьвторой. Например, возьмем строки «усталость» и «tiguefa». В этом случае первая строка была повернута на 5 символов вперед для получения второй строки, поэтому будет возвращено значение 5.

Если вторая строка не является допустимым поворотом первой строки, метод возвращает -1. Спецификация shifttedDiff (first, second) предоставляет количество поворотов для соответствия словам

Параметры first: String - слово для сопоставления

second: String - слово для проверки

ReturnValue Number - Число вращений, ноль или -1, если недопустимо

Примеры:

  • "coffee", "eecoff" => 2
  • "eecoff "," coffee "=> 4
  • " лось "," Moose "=> -1
  • " not "," 'tisn "=> 2
  • "Esham", "Esham" => 0
  • "собака", "бог" => -1

Ответы [ 2 ]

0 голосов
/ 26 октября 2019

let shiftedDiff = (f, s) => {
    let r = -1;
    f.split('').forEach((e, i) => {
        f = f.substr(1) + e;
        if (f == s) r = f.length - (i + 1)
    })
    return r;
}

console.log(shiftedDiff("coffee", "eecoff"))
console.log(shiftedDiff("eecoff", "coffee"))
console.log(shiftedDiff("moose", "Moose"))
console.log(shiftedDiff("isn't", "'tisn"))
console.log(shiftedDiff("Esham", "Esham"))
console.log(shiftedDiff("dog", "god"))
0 голосов
/ 26 октября 2019

function shiftedDiff(first, second) {

  // Split the second word into an array for
  // easier manipulation
  const arr = [...second];

  // Iterate over the array
  for (let i = 0; i < arr.length; i++) {

    // If the first and joined array match
    // return the index
    if (first === arr.join('')) return i;

    // Otherwise `shift` off the first element of `arr`
    // and `push` it on the end of the array
    arr.push(arr.shift());
  }

  // If there are no matches return -1
  return -1;
}

console.log(shiftedDiff('coffee', 'eecoff')); // 2
console.log(shiftedDiff('eecoff', 'coffee')); // 4
console.log(shiftedDiff('moose', 'Moose')); // -1
console.log(shiftedDiff("isn't", "'tisn")); // 2
console.log(shiftedDiff('Esham', 'Esham')); // 0
console.log(shiftedDiff('dog', 'god')); // -1

Документация

...