fork(7) download
  1. #include <iostream>
  2. #include <string>
  3. #include <cctype>
  4. using namespace std;
  5.  
  6. int main() {
  7. string a, b;
  8. getline(cin, a);
  9. getline(cin, b);
  10. string a2, b2;
  11. for(auto i: a){
  12. if(isalpha(i)){
  13. a2.push_back(tolower(i)); //Избавляемся от всех знаков кроме букв и понижаем регистр.
  14. }
  15. }
  16. for(auto i: b){
  17. if(isalpha(i)){
  18. b2.push_back(tolower(i));
  19. }
  20. }
  21. if(a2==b2){
  22. cout << a2; //Если строки равны, сразу возвращаем значение одной из них.
  23. return 0;
  24. }
  25. string c;
  26. for(unsigned int i=0; i<a2.size(); i++){ //Сравниваем символы в строках.
  27. for(unsigned int j=0; j<b2.size(); j++){
  28. if(a2[i]==b2[j]){
  29. c.push_back(a2[i]);
  30. for(unsigned int k=i+1, t=j+1; (k<a2.size())&&(t<b2.size()); k++, t++){
  31. if(a2[k]==b2[t]){
  32. c.push_back(a2[k]); //Те, которые совпали, записываем в новую строку.
  33. } else {
  34. break;
  35. }
  36. }
  37. c.push_back(' ');
  38. }
  39. }
  40. }
  41. unsigned int r=0, max=0; //В получившейся строке считаем, сколько букв в самом большом слове.
  42. string c2, maxstr;
  43. for(unsigned int i=0; i<c.size(); i++){
  44. if(c[i]!=' '){
  45. r++;
  46. } else {
  47. if(r>max){
  48. max=r;
  49. }
  50. r=0;
  51. }
  52. }
  53. for(unsigned int i=0; i<c.size(); i++){ //Ищем слова такой же длины и записываем их в строку для вывода черех пробел.
  54. if(c[i]!=' '){
  55. c2.push_back(c[i]);
  56. } else {
  57.  
  58. if(c2.size()==max){
  59. for(auto j: c2){
  60. maxstr.push_back(j);
  61. }
  62. maxstr.push_back(' ');
  63. }
  64. c2.clear();
  65. }
  66. }
  67. cout << maxstr;
  68. return 0;
  69. }
Success #stdin #stdout 0s 3468KB
stdin
Q_+wer ty
q!w ert) q
stdout
Standard output is empty