Найти перевернутое слово в массиве слов - PullRequest
0 голосов
/ 04 декабря 2018

Мне нужно написать функцию, которая берет array определенного слова и находит индекс обратной версии.

Пример.Мне нужно вернуть индекс 'peehs'

var example = ['sheep', 'sheep', 'sheep', 'peehs', 'sheep'];
var result = 3

Просто чтобы уточнить, функция уже получает массив, и это не относится к примеру, упомянутому выше.Таким образом, я мог бы получить массив, такой как:

var example = ['horse', 'esroh', 'horse', 'horse']
var result = 1

Кроме того, как предположили некоторые комментаторы, я не знаю данный массив.Поэтому мне нужно найти слово, встречающееся более одного раза, а затем найти индекс слова, встречающегося только один раз.

Сначала я подумал, что могу взять первый индекс массива и сравнить его с остальными.Однако первый индекс может быть обращенной версией, чтобы он не работал.

Ответы [ 4 ]

0 голосов
/ 04 декабря 2018

Вам обязательно нужно использовать .split, .join и .reverse для этого?Из вашего объяснения я не уверен, что имеет смысл использовать их.

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

let wordArr = ['sheep', 'sheep', 'sheep', 'peehs', 'sheep'];
let tempArr = wordArr.slice().sort();
if(tempArr [0] !== tempArr [1]) {
    console.log(wordArr.indexOf(tempArr[0]));
} else {
    console.log(wordArr.indexOf(tempArr[tempArr.length -1]));
}

Предположительно, вы не можете просто сделать .indexOf ('peehs'), как предложил один комментатор.Это решение должно динамически находить, какое слово используется в массиве, и находить перевернутое слово, которое является нечетным.

0 голосов
/ 04 декабря 2018

Вот пример реализации:

var strings = ['sheep', 'sheep', 'sheep', 'peehs', 'sheep'];
var searchString = 'sheep';

function reverseString(str) {
  return str.split('').reverse().join('');
}

function indexOfReverseString(str, arr) {
  return arr.indexOf(reverseString(str));
}

console.log(indexOfReverseString(searchString, strings));

Объяснение

  • Используйте split(''), reverse() и join('') для преобразования в массив символов, затем поверните его и преобразуйтеобратно к строке.
  • Используйте indexOf, чтобы найти индекс обратной строки в массиве (-1, если совпадений нет).
0 голосов
/ 04 декабря 2018

вы можете проверить по нижеуказанному способу.

Надеюсь, приведенный ниже код решит проблему.

const isReverseString = (str,orgStr) =>
Array.from(str).reverse().join("") === orgStr ? true : false


let arrOfString =  ['sheep', 'sheep', 'sheep', 'peehs', 'sheep'] ;
const orgStr = "sheep";

const findIndexOfArrofString = (arr) => {
  arr.forEach((item,index) => isReverseString(item, orgStr) ? console.log("index is:",index) : null)
}


console.log(findIndexOfArrofString(arrOfString))
0 голосов
/ 04 декабря 2018

Выполните следующие действия:

  1. Возьмите ввод с консоли или любого источника, который у вас есть
    input <-String </p>

  2. обрезать строкудля [ и ]

  3. Разделить, если для ,, вы получите массив

  4. Теперь вы должны бытьточно, где ваша строка, т.е. позиция

  5. обратная строка
    reversedstring <- <code>String.reverse()

  6. foreach (массив):
    Сравните обратную строку с каждым элементом массива.

  7. Бинго!вернуть индекс

inputsting = 'sheep';
reversestring = inputsting.split("").reverse().join("");
string s = "['sheep', 'sheep', 'sheep', 'peehs', 'sheep']";
s = s.ltrim('[').rtrim(']');
string [] ss = s.split(',');
int i=0;
for(string s1 : ss)
{
    if (s1==reversestring)
        return i;
    else i++;
}
...