El algoritmo de Blue Bridge Cup mejora las operaciones de cadena policial de la red P1003

Descripción del problema

Como policía de Internet, su tarea es monitorear los correos electrónicos para ver si hay palabras clave sensibles. Sin embargo, algunos sospechosos criminales astutos cambiarán el orden alfabético de ciertas palabras para evitar la inspección. Escriba un programa para encontrar las palabras clave de esta secuencia ajustada. Hay dos líneas de entrada para el programa, la primera línea es la lista de palabras clave y la segunda línea es la oración que se debe verificar. El resultado del programa son las palabras clave ajustadas que se encuentran en la oración. (Las palabras son todas minúsculas, separadas por un espacio entre palabras, y el número de palabras en cada línea es ilimitado)
Entrada:
  pistolas, minas, misiles,
  aameric, ssell, ajustado, dan iimsssle o sit neeemis,
salida:
  pistolas, misiles

Los pensamientos también son buenos:

Guarde cada palabra clave en la primera fila y luego ordene cada palabra clave.

Guarde cada palabra en la oración que se va a verificar en la segunda línea, ordene cada palabra y luego juzgue si son iguales a las palabras clave ordenadas arriba. Si son iguales, escriba las palabras clave originales sin clasificar.

Entonces es cómo extraer cada línea de cadenas separadas por espacios.

Luego aprendí el método istringstream en C ++ .

Referencia de https://blog.csdn.net/jacky_chenjp/article/details/70233212

El uso específico es el siguiente

1 #include <bits / stdc ++. H> 
 2  usando el  espacio de nombres std;  
 3  int main () {  
 4      string str = " aa bb cc dd ee " ;  
 5      istringstream es (str); // Crear objeto istringstream es
 6                            // y Al mismo tiempo, bind is y string str 
7      string s;  
 8      while ( is >> s) { // Escribir la cadena se lee desde str a la cadena s 
9          cout << s << endl;  
 10      }  
 11      retorno  0; 
12 }

 

Resultados corrientes del programa

 

Código de CA para esta pregunta, reproducido de https://blog.dotcpp.com/a/66682

 

1 #include <bits / stdc ++. H>
 2  usando el  espacio de nombres std;
 3  int main () {
 4      string str1, str2;
 5      getline (cin, str1); // Almacene la primera línea de palabras clave 
6      getline (cin, str2 ); // almacena la oración a verificar en la segunda línea 
7      vector < string > s1, s2, s3; 
 8      // s1 almacena la palabra clave 
 9      // s2 almacena la palabra clave ordenada 10      // s3 almacena la 
palabra clave 
 ordenada palabras en una frase a ser examinados 11.      un istringstream Strl (str1), str2 en (str2); // bind 
12 es      de cadena TEMP;
13      while (Str1 >> temp) {
 14          s1.push_back (temp);
15          s2.push_back (temp);
16      }
 17      while (Str2 >> temp) {
 18          s3.push_back (temp);
19      }
 20      para ( int i = 0 ; i <s3.size (); i ++ ) { 
 21      // 将 vector <string> s3 中 的 每 一个 string 元素 s3 [i] 排序
22          sort (s3 [i] .begin (), s3 [i] .end ());
23      }
 24      para ( int i = 0 ; i <s2.size (); i ++) {// Recorrer cada elemento en
          s2 25 sort (s2 [i] .begin (), s2 [i] .end ()); // Ordenar cada elemento en s2 
26          para ( int j = 0 ; j <s3.size (); j ++) { // Atraviesa s3 
27              if (s3 [j] == s2 [i]) { // Si los elementos en s3 después de ordenar son iguales a los elementos en s2 después de ordenar 
28                  cout << s1 [i] << "  " ; // genera palabras clave sin clasificar en s1 
29              }
 30          }
 31      }
 32      return  0 ;
 33 }

 

Supongo que te gusta

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