Сокращение повторяющейся последовательности в строке - PullRequest
0 голосов
/ 30 июня 2010

Я построил платформу для блогов в VB.NET, где аудитория очень молода, и по какой-то причине хотел бы выразить свою приверженность, повторяя последовательности символов в своих комментариях.

Примеры:

Привет !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3<3 <3 LOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOL </p>

.. и т. Д.

Я не хочу отфильтровывать это полностью, однако я хотел бы сократить его до максимум 5 повторяющихся символовили последовательности подряд.У меня нет проблем с написанием функции для обработки одного повторяющегося символа.Но какой же самый эффективный способ отфильтровать повторяющуюся последовательность?

Это то, что я использовал ранее для одиночных повторяющихся символов

Private Shared Function RemoveSequence(ByVal str As String) As String
    Dim sb As New System.Text.StringBuilder
    sb.Capacity = str.Length
    Dim c As Char
    Dim prev As Char = String.Empty
    Dim prevCount As Integer = 0

    For i As Integer = 0 To str.Length - 1
        c = str(i)
        If c = prev Then
            If prevCount < 10 Then
                sb.Append(c)
            End If
            prevCount += 1
        Else
            sb.Append(c)
            prevCount = 0
        End If
        prev = c
    Next

    Return sb.ToString
End Function

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 30 июня 2010

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

Также взгляните на этот ранее заданный вопрос: нахождение длинных повторяющихся подстрок в массивной строке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...