


Vérifie si une permutation d'une chaîne donnée est lexicographiquement supérieure à une autre chaîne donnée
Nous avons reçu deux chaînes et devons vérifier si une permutation de la chaîne donnée existe afin qu'une permutation puisse avoir des caractères plus grands que l'autre permutation au i-ième index.
Nous pouvons résoudre le problème en triant la chaîne et en comparant chaque caractère de la chaîne un par un. Alternativement, nous pouvons utiliser les fréquences de caractères des deux chaînes pour résoudre le problème.
Énoncé du problème - On nous donne des chaînes str1 et str2 de longueur N. Nous devons vérifier s’il existe des permutations de chaînes telles que l’une soit lexicographiquement plus grande que l’autre. Cela signifie que toute permutation doit avoir un caractère au i-ème index qui est supérieur au caractère au i-ème index d'une autre permutation de chaîne.
Exemple
Entrée - str1 = "aef"; str2 = "fgh";
Sortie–Oui
Explication– « fgh » est déjà plus grand que « aef ». Ici, un > ;
Entrée– str1 = "adsm"; str2 = "obpc";
Sortie–Non
Explication– Nous ne trouvons aucune permutation dans laquelle chaque caractère d'une chaîne est plus grand que l'autre.
Méthode 1
Dans cette méthode, nous trierons deux chaînes par ordre lexicographique. Nous comparerons ensuite chaque caractère de la chaîne. Renvoie vrai si tous les caractères de str1 sont inférieurs à str2 ou si tous les caractères de str2 sont inférieurs à str1. Sinon, retournez false.
Algorithme
Utilisez la méthode sort() pour trier les chaînes.
Définissez la variable booléenne isStr1Greater et initialisez-la avec true.
Traversez la chaîne et si le caractère à la i-ème position d'index dans str1 est inférieur à str2, mettez à jour la valeur de isStr1Greater sur false et utilisez le mot-clé break pour interrompre la boucle
Si isStr1Greater est vrai, la boucle se termine avec succès et renvoie vrai.
Maintenant, parcourez la chaîne pour vérifier si str2 est supérieur à str1. Si nous constatons qu’un caractère de str1 est supérieur à str2, alors false est renvoyé.
Renvoie vrai si la boucle se termine avec succès.
Exemple
#include <algorithm> #include <iostream> #include <string> using namespace std; bool isAnyPermLarge(string string1, string string2) { // sort the strings sort(string1.begin(), string1.end()); sort(string2.begin(), string2.end()); // to keep track if string1 is greater than string2 bool isStr1Greater = true; // traverse the string for (int i = 0; i < string1.length(); i++) { // if any character of string1 is less than string2, return false. if (string1[i] < string2[i]) { isStr1Greater = false; break; } } // If string1 is greater, returning true if (isStr1Greater) return true; // traverse the string for (int i = 0; i < string2.length(); i++) { // if any character of string2 is less than string1, return false. if (string1[i] > string2[i]) { return false; } } // return true if string2 is greater than string1 return true; } int main() { string string1 = "aef"; string string2 = "fgh"; bool res = isAnyPermLarge(string1, string2); if (res) { cout << "Yes, permutation exists such that one string is greater than the other."; } else { cout << "No, permutation does not exist such that one string is greater than the other."; } return 0; }
Sortie
Yes, permutation exists such that one string is greater than the other.
Complexité temporelle - O(N*logN) car nous trions les chaînes.
Complexité spatiale - O(N) est requis pour trier les chaînes.
Méthode 2
Dans cette méthode, nous stockerons la fréquence totale de chaque caractère dans les deux chaînes. Ensuite, nous utiliserons les fréquences cumulées pour décider si nous pouvons trouver des permutations de chaînes telles que l’une soit supérieure à l’autre.
Algorithme
Définissez les tableaux map1 et map2 de longueur 26 et initialisez-les à zéro.
Stockez la fréquence des caractères dans str1 dans map1 et stockez la fréquence des caractères dans str2 dans map2.
Définissez les variables booléennes isStr1 et isStr2 et initialisez-les à false pour savoir si str1 est supérieur à str2.
Définissez les variables cnt1 et cnt2 pour stocker la fréquence cumulée des caractères de chaîne.
Traverse map1 et map2. Ajoutez map1[i] à cnt1 et map2[i] à cnt2.
Si cnt1 est supérieur à cnt2, la fréquence cumulée des caractères de str1 au i-ième index est plus grande. Si tel est le cas et que str2 est déjà plus grand, renvoyez false. Sinon, remplacez isStr1 par true
Si cnt2 est supérieur à cnt1, alors la fréquence cumulée du caractère au i-ième index dans str2 est supérieure. Si tel est le cas et que str1 est déjà plus grand, renvoyez false. Sinon, remplacez isStr2 par true
Renvoie enfin vrai.
Exemple
#include <iostream> #include <string> using namespace std; bool isAnyPermLarge(string string1, string string2) { int map1[26] = {0}; int map2[26] = {0}; // store the frequency of each character in the map1 for (int i = 0; i < string1.length(); i++) { map1[string1[i] - 'a']++; } // store the frequency of each character in the map2 for (int i = 0; i < string2.length(); i++) { map2[string2[i] - 'a']++; } // To keep track of which string is smaller. Initially, both strings are equal. bool isStr1 = false, isStr2 = false; // to count the cumulative frequency of characters of both strings int cnt1 = 0, cnt2 = 0; // traverse for all characters. for (int i = 0; i < 26; i++) { // update the cumulative frequency of characters cnt1 += map1[i]; cnt2 += map2[i]; if (cnt1 > cnt2) { // If string2 is already greater and cumulative frequency of string1 is greater than string2, then return false if (isStr2) return false; // update isStr1 to true as string1 is smaller isStr1 = true; } if (cnt1 < cnt2) { // If string1 is already greater and cumulative frequency of string2 is greater than string1, then return false if (isStr1) return false; // update isStr2 to true as string2 is smaller isStr2 = true; } } return true; } int main() { string string1 = "aef"; string string2 = "fgh"; bool res = isAnyPermLarge(string1, string2); if (res) { cout << "Yes, permutation exists such that one string is greater than the other."; } else { cout << "No, permutation does not exist such that one string is greater than the other."; } return 0; }
Sortie
Yes, permutation exists such that one string is greater than the other.
Complexité temporelle - O(N), puisque nous comptons la fréquence des caractères.
Complexité spatiale - O(26) car nous stockons la fréquence des caractères dans le tableau.
Nous avons appris à vérifier s'il existe une permutation de deux chaînes telle que tous les caractères d'une chaîne peuvent être plus grands que l'autre chaîne. La première méthode utilise une méthode de classement et la seconde méthode utilise la fréquence cumulée des caractères.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

De nos jours, les performances et les fonctions des téléphones mobiles deviennent de plus en plus puissantes. Presque tous les téléphones mobiles sont équipés de fonctions NFC pratiques pour faciliter le paiement mobile et l'authentification de l'identité des utilisateurs. Cependant, certains utilisateurs de Xiaomi 14Pro ne savent peut-être pas comment activer la fonction NFC. Ensuite, permettez-moi de vous le présenter en détail. Comment activer la fonction nfc sur Xiaomi 14Pro ? Étape 1 : Ouvrez le menu des paramètres de votre téléphone. Étape 2 : Recherchez et cliquez sur l'option « Connecter et partager » ou « Sans fil et réseaux ». Étape 3 : Dans le menu Connexion et partage ou Sans fil et réseaux, recherchez et cliquez sur « NFC et paiements ». Étape 4 : Recherchez et cliquez sur « NFC Switch ». Généralement, la valeur par défaut est désactivée. Étape 5 : Sur la page du commutateur NFC, cliquez sur le bouton du commutateur pour l'activer.

WPS est notre logiciel bureautique couramment utilisé lors de l'édition d'articles longs, les polices sont souvent trop petites pour être clairement visibles, c'est pourquoi les polices et l'ensemble du document sont ajustés. Par exemple : ajuster l'espacement des lignes du document rendra l'ensemble du document très clair. Je suggère à tous les amis d'apprendre cette étape de l'opération. Je la partagerai avec vous aujourd'hui. Les étapes de l'opération spécifiques sont les suivantes, venez jeter un oeil ! Ouvrez le fichier texte WPS que vous souhaitez ajuster, recherchez la barre d'outils de configuration des paragraphes dans le menu [Démarrer] et vous verrez la petite icône de configuration de l'espacement des lignes (représentée par un cercle rouge dans l'image). 2. Cliquez sur le petit triangle inversé dans le coin inférieur droit du paramètre d'espacement des lignes et la valeur d'espacement des lignes correspondante apparaîtra. Vous pouvez choisir 1 à 3 fois l'espacement des lignes (comme indiqué par la flèche sur la figure). 3. Ou cliquez avec le bouton droit sur le paragraphe et il apparaîtra.

Faire glisser l'écran dans les airs est une fonctionnalité de Huawei très appréciée dans la série Huawei mate60. Cette fonctionnalité utilise le capteur laser du téléphone et la caméra de profondeur 3D de la caméra frontale pour compléter une série de fonctions qui ne nécessitent pas de fonction. fonction de toucher l'écran, comme faire glisser TikTok depuis les airs, mais comment utiliser le Huawei Pocket 2 pour faire glisser TikTok depuis les airs ? Comment faire des captures d'écran depuis les airs avec Huawei Pocket2 ? 1. Ouvrez les paramètres de Huawei Pocket2. 2. Sélectionnez ensuite [Accessibilité]. 3. Cliquez pour ouvrir [Perception intelligente]. 4. Activez simplement les commutateurs [Air Swipe Screen], [Air Screenshot] et [Air Press]. 5. Lorsque vous l'utilisez, vous devez le tenir à 20 ~ 40 cm de l'écran, ouvrir votre paume et attendre que l'icône de la paume apparaisse sur l'écran.

Les fichiers CAO de l'iPhone 16 Pro ont été exposés et la conception est conforme aux rumeurs précédentes. L'automne dernier, l'iPhone 15 Pro a ajouté un bouton d'action, et cet automne, Apple semble prévoir d'apporter des ajustements mineurs à la taille du matériel. Ajout d'un bouton Capture Selon les rumeurs, l'iPhone 16 Pro pourrait ajouter un deuxième nouveau bouton, ce qui sera la deuxième année consécutive à ajouter un nouveau bouton après l'année dernière. La rumeur veut que le nouveau bouton Capture soit placé sur le côté inférieur droit de l'iPhone 16 Pro. Cette conception devrait rendre le contrôle de l'appareil photo plus pratique et permettre également d'utiliser le bouton Action pour d'autres fonctions. Ce bouton ne sera plus un simple déclencheur ordinaire. Concernant la caméra, à partir de l'iP actuelle

Il existe de nombreuses langues parmi lesquelles choisir dans Microsoft Teams, alors comment changer de langue ? Les utilisateurs doivent cliquer sur le menu, puis rechercher Paramètres, y sélectionner Général, puis cliquer sur Langue, sélectionner la langue et l'enregistrer. Cette introduction aux méthodes de changement de langue peut vous indiquer le contenu spécifique. Ce qui suit est une introduction détaillée. Bar! Comment changer de langue dans Microsoft Teams Réponse : Sélectionnez le processus spécifique dans Paramètres-Général-Langue : 1. Tout d'abord, cliquez sur les trois points à côté de l'avatar pour entrer les paramètres. 2. Cliquez ensuite sur les options générales à l'intérieur. 3. Cliquez ensuite sur la langue et faites défiler vers le bas pour voir plus de langues. 4. Enfin, cliquez sur Enregistrer et redémarrer.

Le Redmi K70E est sans aucun doute excellent. En tant que téléphone mobile avec un prix d'un peu plus de 2 000 yuans, le Redmi K70E peut être considéré comme l'un des téléphones mobiles les plus économiques de sa catégorie. De nombreux utilisateurs à la recherche de rentabilité ont acheté ce téléphone pour profiter de diverses fonctions sur le Redmi K70E. Alors comment définir une sonnerie personnalisée pour Redmi K70E ? Comment définir une sonnerie personnalisée pour Redmi K70E ? Pour définir une sonnerie d'appel entrant personnalisée pour Redmi K70E, vous pouvez suivre les étapes ci-dessous : Ouvrez l'application des paramètres de votre téléphone, recherchez l'option "Sons et vibrations" ou "Son" dans l'application des paramètres, puis cliquez sur "Sonnerie d'appel entrant". ou "Sonnerie du téléphone" ". Dans les paramètres de sonnerie

Différences et analyse comparative du langage C et de PHP Le langage C et PHP sont tous deux des langages de programmation courants, mais ils présentent des différences évidentes sur de nombreux aspects. Cet article procédera à une analyse comparative du langage C et de PHP et illustrera les différences entre eux à travers des exemples de code spécifiques. 1. Syntaxe et utilisation : Langage C : Le langage C est un langage de programmation orienté processus, principalement utilisé pour la programmation au niveau système et le développement embarqué. La syntaxe du langage C est relativement simple et de bas niveau, peut exploiter directement la mémoire, et est efficace et flexible. Le langage C met l'accent sur l'exhaustivité du programme pour le programmeur

Comparaison et analyse des avantages et des inconvénients de PHP7.2 et 5. PHP est un langage de script côté serveur extrêmement populaire et largement utilisé dans le développement Web. Cependant, PHP est constamment mis à jour et amélioré dans différentes versions pour répondre à l'évolution des besoins. Actuellement, PHP7.2 est la dernière version, qui présente de nombreuses différences et améliorations notables par rapport à la version précédente de PHP5. Dans cet article, nous comparerons les versions PHP7.2 et PHP5, analyserons leurs avantages et inconvénients et fournirons des exemples de code spécifiques. 1. PH des performances
