0 / 0 / 0
Регистрация: 23.02.2018
Сообщений: 38
1

Найти все возможные подстроки в строке

08.03.2019, 13:24. Показов 3816. Ответов 3
Метки нет (Все метки)

Найти все возможные подстроки в строке начиная с конца.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2019, 13:24
Ответы с готовыми решениями:

Найти в исходной строке все вхождения заданной подстроки и заменить их на другую строку
Найти в исходной строке все вхождения (но не более девяти) заданной подстроки и заменить их на...

Найти все подстроки в строке
Есть строка, следующего вида: ...<div class="b-list__item"><a...

Найти все подстроки в строке
var Str1, Str2: String; P: Integer; { ... } Str1:='Hi! How do you do?'; Str2:='do'; ...

Как найти все подстроки в строке?
Как найти все подстроки в строке, а не только одну?

3
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,745
08.03.2019, 13:33 2
Я уже решал кому-то похожую задачу тут, только не с конца, в вообще все подстроки.
0
0 / 0 / 0
Регистрация: 23.02.2018
Сообщений: 38
10.03.2019, 11:32  [ТС] 3
Видимо давно и неправда. Я не нашел.
0
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,745
10.03.2019, 12:30 4
Цитата Сообщение от SomebodyWhoKnow Посмотреть сообщение
Видимо давно и неправда. Я не нашел.
Видимо, кому-то надо учиться пользоваться гуглом...

C++
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <cstring>
#include <vector>
#include <set>
#include <algorithm>
 
// факториал n
long long F(int n) {
    if (n < 2) return 1LL;
    long long f = 1LL;
    for (int i = 2; i <= n; ++i) f *= i;
    return f;
}
 
// число бесповторных сочетаний из n по m
long long C(int n, int m) {
    if (m < 1 || n < 1 || m > n) return 0LL;
    return F(n) / (F(m) * F(n - m));
}
 
// получить подстроку с порядковым номером i
void ith_substring(long long i, int m, int n, const char * src_string, std::string & substring ) {
    if (m == 0 || !*src_string) return;
    if (m == n) {
        while (*src_string) substring.push_back(*src_string++);
        return;
    }
    if (long long c = C(n - 1, m); i <= c) 
        ith_substring(i, m, n - 1, src_string + 1, substring);
    else {
        substring.push_back(*src_string);
        ith_substring(i - c, m - 1, n - 1, src_string + 1, substring);
    }
}
 
// получить все подстроки без учета повторений (возврат - число полученных подстрок)
long long all_substrings(const std::string & str, std::set<std::string> & substrings) {
    std::string substr;
    substrings.clear();
    long long c_total = 1LL;
    int n = str.size(), m = 1;
    while (m <= n) {
        long long c = C(n, m), i = 1;
        while (i <= c) {
            ith_substring(i, m, n, str.c_str(), substr);
            if (substrings.insert(substr).second) ++c_total;
            substr.clear();
            ++i;
        }
        ++m;
    }
    return c_total;
}
 
int main()
{
    // тест
    std::string str = "abbcdeefg";
    std::set<std::string> substrings;
    std::cout << "Source string: " << str.c_str() << std::endl;
    std::cout << all_substrings(str, substrings) << " substrings were found: " << std::endl;
    for (const auto & s : substrings) std::cout << s.c_str() << std::endl;
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2019, 12:30
Помогаю со студенческими работами здесь

Найти в строке все повторяющиеся подстроки
может есть какой-нибудь встроенный метод? ну то есть SPMRVBVBBBURQGIBDUGRNICJRVUAXSSR...

С использованием функции найти все вхождения подстроки в строке
Всем логимыслящим Большой Привет! Помогите меня избавить от страданий написать программу...Лайками...

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

Найти в исходной строке все вхождения заданной подстроки и заменить их на другую строку
Доброго времени суток! Помогите, пожалуйста, с задачей. Буду премного благодарна! Найти в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru