поиск подстроки без цифр

248
15 февраля 2018, 15:26

Дан строковый массив из n элементов, где n – натуральное число. Найти в этом массиве самую длинную подстроку, не содержащую цифры.

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

Застрял на том, что не знаю как заполнить контейнер элементами посимвольно и превратить это все в строковый контейнер. То бишь допустим кол-во символов равно 10, вводим строку: asd456h78i. Контейнер q заполняется посимвольно, там лежат 'a', 's', 'd', 'h', 'i'. Надо теперь завести новый контейнер допустим conteiner и чтоб там было вот так: conteiner[0] = "asd", conteiner[1] = "h", conteiner[2] = "i" и тд. + Надо как то надо подсчитать количество букавок в каждой ячейке, допустим conteiner[0] содержит 3 буквы + надо как то учесть, что количество строк с максимальной длиной может быть больше 1

int n;
cin >> n;
char *a = new char[n+1];

vector<char> q;
gets_s(a,n+1);
cin.getline(a, n+1);
for (int i = 0, len = strlen(a); i < len; i++)
{
    if (isdigit(a[i]))  continue;

    while (!isdigit(a[i]))
    {
        q.push_back(a[i]);
        if (i == len)
            break;
        i++;
    }
    for (int i = 0; i< q.size(); i++)
        cout << q[i] << endl;
    q.clear();
}
delete[] a;
_getch();
Answer 1
#include <iostream>
#include <set>
using namespace std;
int main()
{    
    string s = "675Has12 a strong desire to2 learn and explore44 new technologies " ;
    set<string> res;
    auto first = s.begin();
    string vs;
    while ( first != s.end() ) {
        // если первый символ цифра, то находим символ нецифру
        if (isdigit(*first))
            first = find_if(first, s.end(), [](char c) { return !isdigit(c); });
        auto last = find_if(first, s.end(), [](char c) { return isdigit(c); });
        // получаем строку без цифр
        vs = accumulate(first, last,   string());
        res.insert(vs);
        first = last;
    }
    cout << *res.begin(); // ваше самое длинное слово
    return 0;
}

и еще : "Дан строковый массив из n элементов, где n – натуральное число" - Саму собой разуммется, что n не только натуральное, но и целое без знака, если оно представляет количество элементов...

READ ALSO
QFileDialog стандартная папка

QFileDialog стандартная папка

Как задать при вызове QFileDialog стандартную папку, которая должна показываться?

225
Как найти фамилию и номер из контактов?

Как найти фамилию и номер из контактов?

Моя задача состоит в том чтобы получить имя фамилию и номер телефона абонентаВот так я получаю все значения, кроме фамилии

187
String и сравнение через == [дубликат]

String и сравнение через == [дубликат]

На данный вопрос уже ответили:

191
Роль interface в Java

Роль interface в Java

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

213