Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <iostream>
- using namespace std;
- int main() {
- string str;
- // предисловие. В строку входят пробелы "101 101 110 01"
- // задачу можно решать двумя способами
- // считывая строку до пробелов или считывая всю сразу
- // я подумал у тебя здесь больше второй способ.
- cout << "Vvedite stroku" << endl;
- // cin >> str; // строка только до пробела, надо до /n.
- // Для этого можно использовать getline
- getline(cin, str);
- // добавим фиктивный пробел, он нам потом понадобится
- str += " ";
- const char* start_point = str.c_str();
- const char* ans_start_point = start_point;
- int min_size = strlen(start_point);
- int tmp_size; // g
- // цикл пока
- while (*start_point) {
- tmp_size = 0;
- do {
- tmp_size++;
- start_point++;
- }
- // раньше у нас был while вот такой, но он вылетает
- // если в группе разные цифры
- // while (*start_point == *(start_point - 1));
- // поэтому стоит его поменять на "пока не встретишь Пробел"
- while (*start_point != ' ');
- if (tmp_size < min_size) {
- ans_start_point = start_point - tmp_size;
- // считается плохим манером оставлять равно так, как было у тебя
- min_size = tmp_size;
- }
- // тут мы остановились на " ", надо идти дальше
- start_point++;
- }
- for (int i = 0; i < min_size; i++)
- cout << ans_start_point[i];
- // однако, данная решение не является решением задачи
- // в уловии просят найти максимальную подстроку из одниаковых символом
- // за 5 мин напишем решение
- string input;
- cin >> input;
- input += '2';
- int count = 0;
- char c = '0';
- int min_size_ = input.size();
- for (int i = 0; i < input.size() - 1; i++) {
- if (input[i] == input[i + 1]) {
- count++;
- } else {
- if (count < min_size_) {
- min_size_ = count;
- count = 1;
- c = input[i - 1];
- }
- }
- }
- for (int i = 0; i < min_size_; i++) {
- cout << c;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement