Table des matières
Exemple
Instructions
Méthode : utiliser Hashmap
Sortie
Conclusion
Maison développement back-end C++ Convertit la chaîne donnée en T, en remplaçant les caractères entre les chaînes un certain nombre de fois

Convertit la chaîne donnée en T, en remplaçant les caractères entre les chaînes un certain nombre de fois

Sep 10, 2023 pm 04:25 PM
字符串 替换 转换

Convertit la chaîne donnée en T, en remplaçant les caractères entre les chaînes un certain nombre de fois

Convertir une chaîne signifie que nous devons la rendre identique à la chaîne donnée en fonction de la condition donnée. Dans cette question, on nous donne un tableau composé d'une chaîne "arr" et d'une chaîne "T" de taille "M". Notre tâche est de vérifier si toutes les chaînes présentes dans le tableau peuvent être rendues identiques à celle donnée en supprimant n'importe quel caractère de la chaîne ( arr[i] ) du tableau et en insérant ce caractère dans n'importe quel index d'une autre chaîne. String T String du même tableau ( arr[j] ). Nous pouvons faire cela autant de fois que nous le souhaitons. Renvoie "OUI" si toutes les chaînes du tableau peuvent être rendues identiques à la chaîne "T", sinon renvoie "NON".

Exemple

Input 1: arr = [ “wxyz”, “wxxy”, “wyzz” ], T = “wxyz”
Copier après la connexion
Output 1: YES
Copier après la connexion

Instructions

L'une des façons possibles de rendre toutes les chaînes d'un tableau identiques à la chaîne T est la suivante -

  • Supprimez le caractère de la chaîne arr[1] ("wxxy") à l'index 2 et insérez-le dans la chaîne arr[2] ("wyzz") à l'index 1. Ensuite, cela ressemble à : ["wxyz","wxy","wxyzz"]

  • Supprimez le caractère de la chaîne arr[2] ("wxyzz") à l'index 3 et insérez-le dans la chaîne arr[1] ("wxy") à l'index 3. Cela ressemble alors à : ["wxyz","wxyz","wxyz"].

Après avoir effectué les étapes ci-dessus, nous pouvons rendre toutes les chaînes du tableau identiques à la chaîne T. La réponse est donc « OUI ».

Input 2: arr = [ “rts”, “rtw”, “rts” ], T = “rts”
Copier après la connexion
Output 2: NO
Copier après la connexion

Instructions

Il y a 3 chaînes dans le tableau, dont 2 sont identiques à la chaîne T, mais la chaîne avec le numéro d'index 1 est différente. Il contient différents caractères qui ne font pas partie de la chaîne T. Il n'est pas possible de faire de toutes les chaînes du tableau une chaîne T. La réponse est donc « NON ».

Méthode : utiliser Hashmap

Nous avons vu l'exemple ci-dessus avec la chaîne donnée, passons à la méthode -

Nous avons deux observations comme suit -

  • Parce que nous devons rendre toutes les chaînes du tableau identiques à la chaîne T, de sorte que tous les caractères de chaque chaîne du tableau doivent apparaître dans la chaîne T. En d’autres termes, il n’y a pas de personnages différents. Sinon, nous ne pouvons pas remplir les conditions.

  • Après avoir calculé la fréquence d'occurrence des caractères pour toutes les chaînes du tableau, la fréquence d'occurrence de chaque caractère doit être égale à la taille du tableau "N".

    < /里>

Sur la base des observations ci-dessus, nous avons deux conditions à vérifier.

  • La carte de hachage des chaînes du tableau de taille "freqArr" est égale à la carte de hachage "freqT" de la chaîne "T". comme

freqArr.size() == freqT.size()
Copier après la connexion
  • Chaque caractère de la chaîne T doit apparaître dans chaque chaîne du tableau. Chaque caractère de la chaîne T doit avoir une fréquence de « N » dans la chaîne du tableau. Comme-

freqArr.find(T[i]) == freqArr.end() and 
freqArr[T[i]] != freqT[T[i]]*N.
Copier après la connexion

Nous pouvons utiliser le hachage pour résoudre ce problème car nous devons calculer la fréquence des caractères dans la chaîne du tableau et la chaîne T.

Exemple

Voyons le code de la méthode ci-dessus pour une meilleure compréhension -

// Program to convert all strings to T
#include <bits/stdc++.h>
using namespace std;
string covertStringIntoT( int N, string arr[], string T){
   map< char,int > freqT; //to store the frequency of each character of string T
   int len = T.size(); //getting the size of the string T 
   
   //traverse the string T to store the frequency of the characters
   for( int i=0; i<len; i++){
      freqT[T[i]]++;
   }
   map< char,int > freqArr; //to store the frequency of each chracter of strings 
   
   // of Array.
   //traverse the strings of Array to store the frequency of the characters
   for( int i=0; i<N; i++){
      for(int j=0;j<arr[i].size(); j++){
         freqArr[arr[i][j]]++;
      }
   }
   
   // Check the condition one
   if(freqT.size() != freqArr.size()){
      return "NO";
   }    
   
   //check condition two while trversing the string T
   for( int i=0; i<len; i++){
      if(freqArr.find(T[i]) == freqArr.end() || freqArr[T[i]] != freqT[T[i]]*N ){
         return "NO";
      }
   }
   return "YES";
}
int main() {    
   string T = "wxyz"; // given string
   string arr[] = {"wxyz", "wxyy", "wxzz"}; // given array of strings
   int N = sizeof(arr) / sizeof(arr[0]); //getting the size of the array of string 
   
   // calling the function 'convertStringIntoT' to convert all strings of the 
   
   // array into string T
   string result = covertStringIntoT( N, arr, T);
   if(result == "YES"){
      cout<< result << ", it is possible to make all the strings of the array as string T";
   }
   else{
      cout<< result << ", it is not possible to make all the strings of the array as string T"; 
   }
   return 0;
}
Copier après la connexion

Sortie

YES, it is possible to make all the strings of the array as string T
Copier après la connexion

Complexité temporelle et spatiale

La complexité temporelle du code ci-dessus est O(M + N*L)

La complexité spatiale du code ci-dessus est O(M)

Où M est la taille de la chaîne T, N est la taille du tableau et L est la chaîne la plus longue présente dans le tableau.

Conclusion

Dans ce tutoriel, nous avons implémenté un programme qui convertit une chaîne donnée en T en remplaçant les caractères entre les chaînes autant de fois que nécessaire. Nous avons mis en place une méthode de hachage car nous devions stocker les fréquences. Dans cette méthode, nous vérifions principalement deux conditions, si toutes les conditions sont remplies, cela signifie que nous sommes capables de convertir toutes les chaînes du tableau en la même chaîne que la chaîne T.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Conseils pratiques pour convertir des lettres anglaises pleine chasse en demi-chasse Conseils pratiques pour convertir des lettres anglaises pleine chasse en demi-chasse Mar 26, 2024 am 09:54 AM

Conseils pratiques pour convertir des lettres anglaises pleine chasse en demi-chasse

Comment convertir de la musique qq au format mp3 Convertir de la musique qq au format mp3 sur téléphone mobile Comment convertir de la musique qq au format mp3 Convertir de la musique qq au format mp3 sur téléphone mobile Mar 21, 2024 pm 01:21 PM

Comment convertir de la musique qq au format mp3 Convertir de la musique qq au format mp3 sur téléphone mobile

Explication détaillée de la méthode d'implémentation de conversion des mois PHP en mois anglais Explication détaillée de la méthode d'implémentation de conversion des mois PHP en mois anglais Mar 21, 2024 pm 06:45 PM

Explication détaillée de la méthode d'implémentation de conversion des mois PHP en mois anglais

Explication détaillée de la méthode de conversion du type int en chaîne en PHP Explication détaillée de la méthode de conversion du type int en chaîne en PHP Mar 26, 2024 am 11:45 AM

Explication détaillée de la méthode de conversion du type int en chaîne en PHP

Tutoriel PHP : Comment convertir un type int en chaîne Tutoriel PHP : Comment convertir un type int en chaîne Mar 27, 2024 pm 06:03 PM

Tutoriel PHP : Comment convertir un type int en chaîne

Découvrez rapidement la conversion de valeurs ASCII en PHP Découvrez rapidement la conversion de valeurs ASCII en PHP Mar 28, 2024 pm 06:42 PM

Découvrez rapidement la conversion de valeurs ASCII en PHP

Comment convertir des lettres anglaises pleine chasse en lettres demi-chasse Comment convertir des lettres anglaises pleine chasse en lettres demi-chasse Mar 25, 2024 pm 02:45 PM

Comment convertir des lettres anglaises pleine chasse en lettres demi-chasse

Comment convertir du texte Word en tableau Comment convertir du texte Word en tableau Mar 19, 2024 pm 07:46 PM

Comment convertir du texte Word en tableau

See all articles