Форум программистов, компьютерный форум CyberForum.ru

Найти в строке string наиболее часто встречающуюся пару символов и заменить на один новый символ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка в коде при использовании класов http://www.cyberforum.ru/cpp-beginners/thread162729.html
#include <iostream> #include <fstream> #include <time.h> #include <stdio.h> using namespace std; class Hello { int money, money_prize;; public: Hello()
C++ корректировка уже введенных пользователем данных Работаю в консоли. Пользователю выдаются показатели бух.баланса, после чего проверяется, сошелся баланс или нет (при инициализации переменных им присваивается нулевое значение). Как сделать, чтобы пользователь мог пропустить ввод показателя простым нажатием <Enter> (согласиться с предлагаемым умолчанием или уже введенным им в предыдущий заход значением)? Если я убираю в конце каждой строки... http://www.cyberforum.ru/cpp-beginners/thread162711.html
C++ Переопределение операций
Ситуация такая. В классе матриц переопределён оператор взятия индекса: float operator() (int row, int column) const; Сами данные (элементы матрицы) хранятся в виде одномерного массива, поэтому для простоты нужен этот оператор. В переопределении операции сложения хочу сделать так: result(i,j) = A(i,j)+B(i,j);
Не пишет по-русски C++
Ввожу значения переменных на русском языке, а вместо слов непонятные буквы. Что нужно дописать чтобы понимались русские слова? (Редактор MSVS 2010)
C++ Как создать неопределенное (т.е. не ограниченное в коде) количество экземпляров класса? http://www.cyberforum.ru/cpp-beginners/thread162678.html
Если кратко, опишу задачу так. Есть баланс предприятия - "срез" показателей, который характеризуется рядом параметров (считай, большая таблица с одним столбцом значений). Баланс может рассчитываться по состоянию на любую дату. Нужно проанализировать некоторое количество последовательных балансов (грубо говоря, их может быть до 365*50=18250 экземпляров, хотя реально используется порядка 50,...
C++ обработка исключений Есть вот такой код: #include <iostream> #include <fstream> using namespace std; int _tmain(int argc, _TCHAR* argv) { //Input from file ifstream fin ("input.txt"); подробнее

Показать сообщение отдельно
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
01.09.2010, 15:57  [ТС]     Найти в строке string наиболее часто встречающуюся пару символов и заменить на один новый символ
вот что получилось у меня на с+++STL
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
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
//поиск и замена
string search(string s);
string replace(string what, string slov);
 
int main()
{
   string s;
   cin>>s;
   //если найдены пары, которые повторяются, то
   while(search(s)!="")
   //заменяем их на новый символ
      s=replace(search(s), s);
      
   //что получилось в конце
   cout<<s<<endl;
   return 0;
}
 
string search(string s)
{
   vector<int> max(s.size(), 1);
   int result, back=0;
   for(int i=0; i<s.size(); i++)
      for(int j=0; j<s.size(); j++)
      {
         if(j==i || j+1==i) {j+=2; continue;}
         if(s[j]==s[i] && s[j+1]==s[i+1]) max[i]++;
      }
   result=max[0];
   for(int i=0; i<max.size()-1; i++)
      if(max[i]>result) {result=max[i]; back=i;}
   string zam;
   string no="";
   zam+=s[back];
   zam+=s[back+1];
   if(result==1) return no;
   return zam;
}
 
string replace(string what, string slov)
{
   string result;
   static char simvol=128;
   for(int i=0; i<slov.size()-1; i++)
   {
      if(what[0]==slov[i] && what[1]==slov[i+1])
      {
         result+=simvol;
         i++;
      }
      else 
      result+=slov[i];
   }
   simvol++;
   return result;
}
у меня заменяет абсолютно все пары, которые повторяются
 
Текущее время: 09:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru