Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/88: Рейтинг темы: голосов - 88, средняя оценка - 4.98
0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 39

Разработать код, печатающий на консоль самую длинную общую подстроку всех переданных строк.

10.08.2019, 14:33. Показов 16351. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сам код
JavaScript
1
function lcs(a){let b=a.reduce((c,a)=>c.length<=a.length?c:a),c=b.length;for(let d=c;256>=(0<=d);d--)for(let e,f=0;f<=c-d;f++)if(e=b.substring(f,f+d),a.every(a=>~a.indexOf(e)))return e;return"/n"}3>process.argv.length?console.log(""):console.log(lcs(process.argv.slice(2)));
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.08.2019, 14:33
Ответы с готовыми решениями:

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

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

Найти самую длинную общую часть двух строк
заданы две строки.Найти самую длинную их,общую часть.

6
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
10.08.2019, 14:43
Здравствуйте.
AlexejDrozdov, смысл функции напишите, пожалуйста. И желательно входные данные и результат, который должен быть.

Наверняка можно реализовать функцию попонятнее и подлиннее.

Добавлено через 1 минуту
process.argv.length
Нода?
Так и нужно было написать, что Нода.
0
0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 39
10.08.2019, 14:45  [ТС]
Требуется разработать на языке JavaScript код, печатающий на консоль самую длинную общую подстроку всех переданных строк. Если самая длинная общая подстрока является пустой строкой (например, не было передано ни одной строки или строки не имеют общих для всех символов), напечатать один перевод строки (пустую строку). При существовании нескольких решений — напечатать одно решение (любое).


Задача максимально коротко написать, не обязательно понятно.

Добавлено через 41 секунду
Нужно именно короче по количеству байтов
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
10.08.2019, 14:47
AlexejDrozdov, это NodeJS или в браузере? Строки то как передавать?

a - массив строк?
0
0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 39
10.08.2019, 14:52  [ТС]
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function lcs(strings)
{
    let shortest = strings.reduce((a, b) => a.length <= b.length ? a : b);
    let maxlen = shortest.length;
    for (let len = maxlen; len >= 0; len--)
    {
        for (let start = 0; start <= maxlen - len; start++)
        {       
            let substr = shortest.substring(start, len);
            if (strings.every(elem => ~elem.indexOf(substr))) {return substr;}
        }
    }
    return '';
}
 
if (process.argv.length < 3)
    console.log('');
else
    console.log(lcs(process.argv.slice(2)));
Вызов
node lcs.js ZZZABXXX XXXYYYAB ABYYYZZZ
AB

Добавлено через 25 секунд
Это до укорачивания
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
10.08.2019, 15:56
AlexejDrozdov, здесь применен понятный алгоритм. В Википедии вообще страшненький алгоритм.
Можно только слегка осовременить и учесть особенности аргументов командной строки, что там разрывы по пробелам, и что там всегда массив строк.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function lcs(strings) {
    if (!strings.length) return '';
    let shortest = strings.reduce((a, b) => a.length <= b.length ? a : b),
        maxlen = shortest.length;
 
    for (let len = maxlen; len > 0; len--) {
        for (let start = 0; start <= maxlen - len; start++) {
            let substr = shortest.slice(start, len);
            if (strings.every(elem => elem.includes(substr)))
                return substr;
        }
    }
    return '';
}
 
console.log(lcs(process.argv.slice(2)));
0
0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 39
10.08.2019, 17:22  [ТС]
Спасибо. А скажите, есть ли возможность ужать этот код до размера порядка 100-200 байт, при этом не обязательно он должен хорошо читаться?

Добавлено через 1 час 3 минуты
И я так понимаю, то можно написать и не в виде функции?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.08.2019, 17:22
Помогаю со студенческими работами здесь

В строке найти самую длинную подстроку
С клавиатуры водится строка,найти самую длинную подстроку, которая повторяется больше одного раза в данной строке, найти сколько раз она...

Найти в строке самую длинную повторяющуюся подстроку
в паскаль найти в строке самую длинную повторяющую подстроку Добавлено через 11 минут Пожалуйста..очень сейчас нужно

Найти самую длинную подстроку, состоящую из одинаковых символов
В данной строке найти самую длинную подстроку, состоящую из одинаковых символов.

Найти самую длинную подстроку, состоящую из одинаковых символов
Задача 2 В данной строке найти самую длинную подстроку, состоящую из одинаковых символов. Помогите буду очень благодарна! И можно с...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru