Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для w_mark_w
14 / 3 / 1
Регистрация: 14.01.2019
Сообщений: 52

Корреляция строк

07.12.2021, 02:28. Показов 1376. Ответов 9

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

Возник такой затык:

есть строка S1
есть строка S2

нужно склеить их таким образом:

S1 + S2

Но с определенным условием:
если конец S1 совпадает с началом S2 - то их надо объеденить.

Пример:
S1 = "ab"
S2 = "ba"
Ответ: "aba"

Пример
S1 = "aab"
S2 = "aab"
Ответ: "aab"

Пример
S1 = "aaba"
S2 = "aab"
Ответ: "aabaab"

Пример
S1 = "aab"
S2 = "aabaa"
Ответ: "aabaa"

и т.д. и т.п.

Может есть какое-нибудь коробочное решение? А если нет - то подскажите идею как это реализоввать.

Заранее благодарю
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.12.2021, 02:28
Ответы с готовыми решениями:

Корреляция, не удается подключить System.Web.Ui.DataVisualization.Charting
Здраствуйте, разбираюсь с корреляцией на шарпе. Нашел такую инфу: ...

OpenCV: Корреляция изображений по шаблону
Доброй ночи, уважаемые форумчане! Я пишу диплом на тему "Распознавание автомобильных государственных знаков" и в ходе написания мне...

Корреляция
нужна (простенькая задача) где используется корреляция плюс нужен алгоритм к этой задаче и решений пожалуйста помогите

9
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
07.12.2021, 03:47
Лучший ответ Сообщение было отмечено w_mark_w как решение

Решение

Не очень эффективно, но для коротких строк пойдет:
C#
1
2
3
4
5
6
7
8
string ConcatWithOverlap(ReadOnlySpan<char> a, ReadOnlySpan<char> b)
{
    var t = b;
    while (!a.EndsWith(t))
        t = t[..^1];
 
    return string.Concat(a, b.Slice(t.Length));
}
Если нужна бо́льшая эффективность, то смотрите в сторону алгоритма KMP — в зависимости от длины и типа сравниваемых строк в какой-то момент дополнительные затраты на высчитывание таблицы индексов начнут окупаться.
1
 Аватар для w_mark_w
14 / 3 / 1
Регистрация: 14.01.2019
Сообщений: 52
07.12.2021, 08:43  [ТС]
Подскажите, что надо подключить чтобы сработала строка
C#
1
t = t[..^ 1];
0
 Аватар для esperanto_qun
1124 / 656 / 393
Регистрация: 28.01.2021
Сообщений: 1,336
07.12.2021, 09:14
w_mark_w, Скачать C# 8 версии.
0
Эксперт .NET
 Аватар для Usaga
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,407
07.12.2021, 09:46
w_mark_w, для этого нужен .NET Core 3.0 или новее.
0
Заблокирован
07.12.2021, 10:04

Не по теме:

Цитата Сообщение от w_mark_w Посмотреть сообщение
что надо подключить чтобы сработала строка
Батюшки...ну это же уже не язык программирования, это же уже иероглифы давно... Господа, что деется? Как это всё можно упомнить? Это же даже уже прочитать невозможно. От всего этого "синтаксического сахара" неизбежен диабет вселенского программистского разума!


0
Эксперт .NET
 Аватар для Usaga
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,407
07.12.2021, 10:14
titan4ik, упомнить можно. Просто нужно больше усилий, чем лет десять назад. Это нормально для живого языка. Не C# один таким путём идет.
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
07.12.2021, 10:58
titan4ik, это slice-ing syntax, свистнутый Mads-ом Kristensen-ом из пайтона.
С тем же поведением (inclusive start, exclusive end) и т.д. Что является признаком best practice.
Конвергенция технологий, все дела. Это несложно запомнить, было бы с чем ассоциировать.

Добавлено через 1 минуту
У них и в версии C# 10 упор на minimalistic API - это все из пайтона подсмотрено.
1
 Аватар для w_mark_w
14 / 3 / 1
Регистрация: 14.01.2019
Сообщений: 52
08.12.2021, 17:53  [ТС]
А можно эквивалент этой строки для .NET Framework 4.5.1 версии?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
08.12.2021, 18:50
w_mark_w, поставьте пакет System.Memory:
C#
1
2
3
4
5
6
7
8
9
10
11
12
static string ConcatWithOverlap(string a, string b) => ConcatWithOverlap(a.AsSpan(), b.AsSpan());
static string ConcatWithOverlap(ReadOnlySpan<char> a, ReadOnlySpan<char> b)
{
    var t = b;
    while (!a.EndsWith(t))
        t = t.Slice(0, t.Length - 1);
 
    Span<char> span = new char[a.Length + b.Length - t.Length];
    a.CopyTo(span);
    b.Slice(t.Length).CopyTo(span.Slice(a.Length));
    return span.ToString();
}
Придется делать лишние копирования.

Это вы какой-то древний проект поддерживаете, что у вас .NET Fx 4.5.1?
Поддержка 4.5.1 закончилась в январе 2016-го года, на него уже даже патчи с прошивками безопасности не выходят.
Поддержка 4.5.2 закончится в апреле 2022-го.

Может, имеет смысл переходить на .NET 5 или 6?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.12.2021, 18:50
Помогаю со студенческими работами здесь

Корреляция
Хотел бы прояснить алгоритм вычисления кроскорреляции дискретных сигналов, а то в разных книгах разные методы приводятся. Например...

Корреляция
Читая матчасть, сталкиваюсь с тем, что в формуле взаимной корреляции у разных авторов разные знаки: Rff(j)=1\N*SUM(figi+j) и...

корреляция
M(xy)*MxMy вычислить корреляцию для дискретного и непрерывного случая.. помогите пож..срочно надо

Корреляция
Помогите решить проблему - хочу посчитать коэффициент автокорреляции сигнала &quot;на лету&quot;, то есть по мере поступления отсчетов в...

Корреляция
Добрый вечер, в приложении задание в эксель (решенный вариант), цветом залиты те столбци и данные которые мной уже посчитаны (найдены...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru