Operação de edição de cordas Blue Bridge Cup

Descrição do problema
  Digite uma sequência de caracteres (comprimento <= 40 caracteres) no teclado e termine com o caractere '.'. As funções de edição são:
  1 D: excluir um caractere, o comando é: D a onde a é o caractere excluído, por exemplo: D significa excluir o caractere 's', se houver vários 's' na string e excluir o primeiro Apareceu novamente.
  2 I: Insere um caractere, o formato do comando é: I a1 a2 onde a1 significa inserir antes do caractere especificado, a2 significa o caractere a ser inserido. Por exemplo: I sd significa inserir o caractere 'd' antes do caractere especificado 's'. Se houver vários 's' na string original, ele será inserido antes do último caractere.
  3 R: Para substituir um caractere, o formato do comando é: R a1 a2 em que a1 é o caractere substituído e a2 é o caractere substituído.Se houver vários a1s na string original, todos deverão ser substituídos.
  Durante o processo de edição, se o caractere alterado não existir, uma mensagem será exibida.
Formato de entrada
  Digite um total de duas linhas, a primeira linha é a string original (termina com um '.') E a segunda linha é o comando (para o método de entrada, consulte "Descrição do Problema").
Formato de saída
  É emitido um total de uma linha e uma mensagem de aviso indicando que o caractere especificado não existe é emitida para a cadeia de caracteres modificada.
Entrada de amostra
Isto é um livro.
D s
Saída de amostra
Thi é um livro.
Explicação de entrada e saída de amostra
  O comando é excluir s, os primeiros s que aparecem no caractere estão em This e o resultado é obtido.
O título parece ter um problema: " No processo de edição, se um caractere que foi alterado não existir, será exibida uma mensagem rápida " Parece inútil, supondo que todos os caracteres alterados existam.
Operações básicas de string são simuladas passo a passo.
Outros caracteres, como novas linhas que são lidas por char, são ofuscados, e eu estou acostumado a lê-los com string.
Referência de https://blog.csdn.net/vivenn/article/details/79615847
1 #include <bits / stdc ++. H>
 2  usando o  namespace std;
3  int main () {
 4      string s;
5      getline (cin, s);
6      cordas a, b, c;
7      cin >> a;
8      int len = s.length ();
9      int t;
10      if (a [ 0 ] == ' D ' ) {
 11          cin >> b;
12          t = 0 ;
13          para ( inti = 0 ; eu <len; i ++ ) {
 14              if (s [i] == b [ 0 ]) {
 15                  break ;
16              }
 17              t ++ ;
18          }
 19          para ( int i = t + 1 ; i <len; i ++ ) {
 20              s [i - 1 ] = s [i];    
21          }
 22          len-- ;
23          para ( int i = 0 ; i <len; i ++ ) {
 24             cout << s [i];
25          }
 26          cout << endl;
27      } senão  se (a [ 0 ] == ' I ' ) {
 28          cin >> b >> c;
29          t = 0 ;
30          para ( int i = 0 ; i <len; i ++ ) {
 31              if (s [i] == b [ 0 ]) {
 32                  t = i; 
33              }
 34          }
 35         for ( int i = len - 1 ; i> = t; i-- ) {
 36              s [i + 1 ] = s [i];    
37          }
 38          len ++ ;
39          s [t] = c [ 0 ];
40          para ( int i = 0 ; i <= len; i ++ ) {
 41              cout << s [i];
42          }
 43          cout << endl;
44      } senão  se (a [ 0 ] == ' R' ) {
 45          cin >> b >> c;
46          t = 0 ;
47          para ( int i = 0 ; i <len; i ++ ) {
 48              if (s [i] == b [ 0 ]) {
 49                  s [i] = c [ 0 ];
50              }
 51          }
 52          para ( int i = 0 ; i <len; i ++ ) {
 53              cout << s [i];
54          }
 55          cout <<endl;
56      }
 57      retorno  0 ;
58  } 
 59  

Você também pode usar as funções da biblioteca C ++, mas essas funções têm muitos parâmetros e são fáceis de confundir.Eu ainda estou acostumado à simulação manual.

Referência de https://blog.csdn.net/Z_122113/article/details/104353544

 

1 #include <bits / stdc ++. H>
 2  usando o  namespace std;
Str de 3  cordas ;
Edição de 4  caracteres ;
5  caracteres a1, a2;
6  int main () {
 7      getline (cin, str);
8      cin >> editar;
9      str = str.substr ( 0 , str.find_first_of ( " . " ) + 1 );
10      string tempstr = str;
11      switch (editar)
 12      {
 13          case  'D ' : cin >> a1; str = str.erase (str.find_first_of (a1), 1 ); quebrar ;
14          caso  ' I ' : cin >> a1 >> a2; str = str.inserir (str.find_last_of (a1), 1 , a2); quebrar ;
15          caso  ' R ' : cin >> a1 >> a2; substitua (str.begin (), str.end (), a1, a2); quebrar ;
16          padrão :
 17              intervalos ;
18      }
 19      if (str == tempstr)
 20          cout << " não existe "21      else cout << str;
22      retorno  0 ;
23 }

 

Acho que você gosta

Origin www.cnblogs.com/fx1998/p/12684688.html
Recomendado
Clasificación