Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 26.04.2014
Сообщений: 76

Нахождения самой длинной подстроки без повторений

10.07.2016, 22:16. Показов 6774. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток!

Застрял с решением одной задачи. Не могли бы вы мне навести меня на мысль, как решать данную задачу?

Реализуйте функцию longestLength принимающую на вход строку и возвращающую длину максимальной последовательности из неповторяющихся символов. Подстрока может состоять из одного символа. Например в строке qweqrty, можно выделить следующие подстроки: qwe, weqrty. Самой длинной будет weqrty.

Пример:

longestLength('abcdeef'); // 5
longestLength('jabjcdel'); // 7

Заранее спасибо за помощь!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.07.2016, 22:16
Ответы с готовыми решениями:

Определение самой длинной строки и 3 символа в каждой
Всем привет, есть задание: Создать форму с 2-мя полями ввода строк и кнопкой, при нажатии которой запускается скрипт, который выводит...

Изменить регистр букв в словах, в которых нет ни одной буквы, содержащейся в последнем слове самой длинной строки файла
Здравствуйте, Помогите пожалуйста написать код на PHP Файл input.txt содержит несколько строк текста. Слова в тексте могут...

Определить длину самой длинной подстроки
Напишите программу, которая определяет длину самой длинной подстроки из подряд стоящих букв "с".

6
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
10.07.2016, 22:38
Лучший ответ Сообщение было отмечено Rebel1994 как решение

Решение

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
function longestLength( $string ) {
    $subStrLast = "";
    $subStr = "";
    for($i=0; ""!==$char=@$string[$i]; $i++) {
        if ( false === $pos = strpos($subStr, $char) ) {
            $subStr .= $char;
        } else {
            if ( strlen($subStr) > strlen($subStrLast) ) {
                $subStrLast = $subStr;
            }
            $subStr = substr($subStr, $pos + 1) . $char;
        }
    }
    if ( strlen($subStr) < strlen($subStrLast) ) {
        $subStr = $subStrLast;
    }
    return (object)['substr'=>$subStr, 'length'=>strlen($subStr)];
}
 
$info = longestLength('abcdeef');
echo "Length: {$info->length}, Substr: {$info->substr}\n";
 
$info = longestLength('jabjcdel');
echo "Length: {$info->length}, Substr: {$info->substr}\n";
 
$info = longestLength('qweqrty');
echo "Length: {$info->length}, Substr: {$info->substr}\n";
возможны ошибки
http://sandbox.onlinephpfuncti... 9773b7a832
2
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
10.07.2016, 23:13
Если угодно, еще вариант:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$str = 'abcdeef';
function longestLength($str){
    for($i=0, $j=$i-1, $c = iconv_strlen ($str, 'UTF-8'); $i<$c; $i++, $j++){
        $str_arr[] = iconv_substr($str, $i, 1, 'UTF-8');
        if($i >= 1 && $str_arr[$i] == $str_arr[$j]) {
            unset($str_arr[$i]);
            break;
        }
    }
    return $str_arr = implode("", $str_arr);
}
echo longestLength($str);
1
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
10.07.2016, 23:38
Цитата Сообщение от Пифагор Посмотреть сообщение
Если угодно, еще вариант:
Ваш вариант не рабочий.
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
10.07.2016, 23:51
Он рабочий, только не совсем по ТЗ.
Из трех вариантов, представленных Вами, он рабочий только в первом случае.
Я учитывал символы только рядомстоящие и возвращал подстроку с первого символа до символа, который повторяется.

Добавлено через 3 минуты
Насколько я вижу, в Вашем коде тоже есть изъян: он не будет работать с mb-строками.
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
11.07.2016, 00:11
Цитата Сообщение от Пифагор Посмотреть сообщение
Из трех вариантов, представленных Вами, он рабочий только в первом случае.
данные варианты представил тс, то есть заданию не соответсвтует отсюда и вывод что
Цитата Сообщение от WhiteMind Посмотреть сообщение
не рабочий
Предположим что вы хотели сделать это:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
 
 
function longestLength($str){
    $str_arr_last = [];
    $str_arr = [];
    for($i=0, $j=$i-1, $c = iconv_strlen ($str, 'UTF-8'); $i<$c; $i++) {
        $str_arr[] = iconv_substr($str, $i, 1, 'UTF-8');
        for($j=0; $j<count($str_arr)-1; $j++) {
            if ( $str_arr[$j] === $str_arr[count($str_arr)-1] ) {
                if ( count($str_arr_last) < count($str_arr)-1 ) {
                    $str_arr_last = $str_arr;
                    unset($str_arr_last[count($str_arr_last)-1]);
                }
                $_str_arr = [];
                for($j++; $j<count($str_arr)-1; $j++) {
                    $_str_arr[] = $str_arr[$j];
                }
                $str_arr = $_str_arr;
                break;
            }
        }
    }
    if ( count($str_arr) < count($str_arr_last) ) {
        $str_arr = $str_arr_last;
    }
    return $str_arr = implode("", $str_arr);
}
 
echo longestLength('abcdeef'), "\n";
echo longestLength('jabjcdel'), "\n";
echo longestLength('qweqrty'), "\n";
Добавлено через 12 секунд
http://sandbox.onlinephpfuncti... b3c4a3f7c8

Добавлено через 4 минуты
Цитата Сообщение от Пифагор Посмотреть сообщение
Насколько я вижу, в Вашем коде тоже есть изъян: он не будет работать с mb-строками.
верно(если под mb-строками понимается utf-8 строки). но и в примере тс не было utf8
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
11.07.2016, 00:16
Цитата Сообщение от WhiteMind Посмотреть сообщение
Предположим что вы хотели сделать это:
Увы, я бы вряд ли додумался до такого алгоритма...

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

Определить длину самой длинной подстроки из подряд стоящих букв «и»
Введена строка символов. Определить длину самой длинной подстроки из подряд стоящих букв «и».

Определить длину самой длинной подстроки из подряд стоящих букв «е»
Прошу проверить программу на правильность. Условие: Дана символьная строка. Определить длину самой длинной подстроки из подряд стоящих...

Функция нахождения самой длинной неубывающей подпослед-ти
void Search(List *head, List*tail) { List *p = head-&gt;next; while (p != tail) { if (p-&gt;info &lt; p-&gt;next-&gt;info) ...

Функция нахождения самой длинной неубывающей подпоследовательности
Помогите найти ошибку //Функция находит самую длинную неубывающую подпоследовательность void Search(List *head, List*tail) { ...

Необходимо найти длину самой длинной подстроки, которая состоит из одинаковых букв
составить программу для нахождения длины самой длинной подстроки в строке &quot;ddvvrwwwrggg &quot;


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru