Описание требования: Найдите элемент массива набора строк, расположенных в разных заказах из набора массивов. Если есть такой массив:
Кода -копия выглядит следующим образом:
['abcd', 'hello', 'bdca', 'olleh', 'cadb', 'nba', 'abn', 'abc']
Результаты, которые можно найти:
Кода -копия выглядит следующим образом:
['abcd', 'bdca', 'cadb']
Тогда ключевой момент здесь состоит в том, чтобы определить, является ли набор строк просто другим порядком символов. Пока весь ключевой момент решен, это будет легче сделать.
Метод 1:
Кода -копия выглядит следующим образом:
var stringClassify = function (arr) {
var arrlength = arr.length,
obj = {},
i = 0,
num, item, name, firstitem, strlength;
for (; i <arrlength; i ++) {
item = arr [i];
strlength = item.length;
num = 0;
// конвертировать отдельные символы в кодирование Unicode
// Прибрать и рассчитать кодирование
for (j = 0; j <strlength; j ++) {
num += item.charcodeat (j);
}
if (! FirstItem) {
FirstItem = item;
obj [num] .push (item);
}
// Проверьте, является ли первый символ строки, которая должна быть добавлена, является ли
// появляются в другой строке, чтобы избежать следующей
// ['ad', 'da', 'bc']
else if (~ firstitem.indexof (item.charat (0))) {
obj [num] .push (item);
}
}
для (имя в obj) {
console.log (obj [name]);
}
};
Метод 1 использует переселение каждого символа в строке, а затем преобразование одного символа в кодирование Unicode и выполнение суммирования кодировки. Суммы кодирования ABCD и BDCA будут последовательными. Наконец, используйте кодированный и ключ в качестве объекта, чтобы сохранить кодированную и последовательную строку.
Метод 1 Следует отметить, что кодирование Unicode строки «AD» и «BC» одинаково. В настоящее время вам нужно добавить дополнительное суждение, чтобы определить, появился ли первый символ в любой строке в другой строке.
Метод 2:
Кода -копия выглядит следующим образом:
var stringClassify = function () {
var arrlength = arr.length,
obj = {},
i = 0,
num, item, name, strarr, newstr;
for (; i <arrlength; i ++) {
item = arr [i];
strarr = arr [i] .split ('');
strarr.sort ();
Newstr = strarr.join ('');
if (! obj [Newstr]) {
obj [Newstr] = [];
}
obj [Newstr] .push (item);
}
для (имя в obj) {
console.log (obj [name]);
}
};
Метод 2 должен преобразовать строку в массив, а затем сортировать массив. ABCD и BDCA станут ABCD после сортировки сорта. Используйте хорошо упорядоченную строку в качестве ключа объекта, чтобы сохранить последовательно отсортированную строку.
Фактически, принцип двух методов состоит в том, чтобы преобразовать символы в кодирование Unicode. Тем не менее, метод 1 является явным преобразованием, в то время как сортировка сортировки, используемая в методе 2, будет неявно преобразована.