Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.50 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. int main() {
  8.   string str;
  9.   // предисловие. В строку входят пробелы "101 101 110 01"
  10.   // задачу можно решать двумя способами
  11.   // считывая строку  до пробелов или  считывая всю сразу
  12.   // я подумал у тебя здесь больше второй способ.
  13.   cout << "Vvedite stroku" << endl;
  14.   // cin >> str;  // строка только до пробела, надо до /n.
  15.   // Для этого можно использовать getline
  16.   getline(cin, str);
  17.   // добавим фиктивный пробел, он нам потом понадобится
  18.   str += " ";
  19.   const char* start_point = str.c_str();
  20.   const char* ans_start_point = start_point;
  21.   int min_size = strlen(start_point);
  22.   int tmp_size; // g
  23.   // цикл пока
  24.   while (*start_point) {
  25.     tmp_size = 0;
  26.     do {
  27.       tmp_size++;
  28.       start_point++;
  29.     }
  30.       // раньше у нас был while вот такой, но он вылетает
  31.       // если в группе разные цифры
  32.       // while (*start_point == *(start_point - 1));
  33.       // поэтому стоит его поменять на "пока не встретишь Пробел"
  34.     while (*start_point != ' ');
  35.  
  36.     if (tmp_size < min_size) {
  37.       ans_start_point = start_point - tmp_size;
  38.       // считается плохим манером оставлять равно так, как было у тебя
  39.       min_size = tmp_size;
  40.     }
  41.     // тут мы остановились на " ", надо идти дальше
  42.     start_point++;
  43.   }
  44.  
  45.   for (int i = 0; i < min_size; i++)
  46.     cout << ans_start_point[i];
  47.  
  48.   // однако, данная задача не является правильной
  49.   // в уловии просят найти максимальную подстроку из одниаковых символом
  50.   // за 5 мин напишем решение
  51.  
  52.   string input;
  53.   cin >> input;
  54.   input += '2';
  55.   int count = 0;
  56.   char c = '0';
  57.   int min_size_ = input.size();
  58.   for (int i = 0; i < input.size() - 1; i++) {
  59.     if (input[i] == input[i + 1]) {
  60.       count++;
  61.     } else {
  62.       if (count < min_size_) {
  63.         min_size_ = count;
  64.         count = 1;
  65.         c = input[i - 1];
  66.       }
  67.     }
  68.   }
  69.   for (int i = 0; i < min_size_; i++) {
  70.     cout << c;
  71.   }
  72.  
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement