Maison > Article > développement back-end > Modifier minimalement une chaîne pour que toutes les sous-chaînes soient différentes
Une chaîne est un type spécifique d'objet qui représente la séquence et le flux de caractères de données. Une chaîne est un conteneur de données, toujours représenté au format texte. Il est également utilisé pour les opérations conceptuelles, de comparaison, de fractionnement, de jointure, de remplacement, de découpage, de longueur, d'internalisation, d'égalité, de comparaison et de sous-chaîne. substring() est un processus de raffinement des données qui extrait les données entre les données enregistrées du début à la fin. substring() ne change pas la chaîne d'origine. Dans un ensemble de données, lorsque nous avons différents caractères, ils peuvent être représentés comme différents éléments de données. Par exemple : « a » et « r » sont différents, tandis que « r » et « r » sont identiques. Ainsi, une chaîne de type orange contient 6 caractères différents. De même, la chaîne pomme ne contient que 4 caractères distincts.
Supposons que "s" soit une chaîne et que nous devions trouver le nombre minimum de modifications requises pour toutes les sous-chaînes afin de rendre la chaîne différente.
Longueur de la ficelle - 26
L'entrée donnée - T est le cas de test de la première ligne, qui est un entier. Pour chaque scénario de test, il n'y aura qu'une seule ligne contenant 26 caractères.
Sortie - Nous obtiendrons le nombre minimum de modifications pour chaque cas de test.
Contraintes du flux de méthode logique
1
1
Dans l'article d'aujourd'hui, nous allons apprendre comment modifier une chaîne pour que toutes les sous-chaînes soient différentes.
Il s'agit d'un algorithme possible pour opérer sur une chaîne de telle sorte que toutes les sous-chaînes soient distinctes tout en minimisant les changements.
Première étape : commencer.
Étape 2 - Utilisez deux boucles imbriquées pour générer des sous-chaînes.
Étape 3 - La boucle externe commence à i = 0 et soustrait la longueur de la chaîne de 1.
Étape 4 - La boucle intérieure commence à j = 0 et soustrait la longueur de la chaîne de 1.
Étape 5 - Construisez une variable de comptage en utilisant la valeur zéro.
Étape 6− À l'intérieur de la boucle externe, créez une variable distinct_character.
Étape 7 - Créez un tableau de fréquences.
Étape 8− Réglez tous les éléments à zéro.
Étape 9 - Vérifiez si la fréquence de la chaîne[j] - 'a' est nulle.
Étape 10− S'il est nul, augmentez-le de 1.
Étape 11− Sinon, divisez-le en une boucle interne.
Étape 12 - Si le décompte est supérieur à zéro, renvoyez le décompte.
Étape 13 - Sinon, retournez -1.
Étape 14 - Résiliation.
string.substring(start, end)
Dans cette syntaxe, nous pouvons voir comment apporter des modifications minimes à une chaîne de telle sorte que toutes les sous-chaînes soient différentes.
Paramètres
Départ - Une position de départ doit être déclarée. L'index du premier caractère ici est 0.
Fin - Il s'agit d'un processus facultatif situé à la fin (y compris, mais sans s'y limiter).
Méthode 1− Recherchez le nombre minimum de modifications qui rendent toutes les sous-chaînes de la chaîne différentes.
Dans cette méthode, nous apprendrons comment rendre toutes les sous-chaînes différentes. Ici, chaque personnage doit être différent. Il suffit de trouver le nombre de caractères. Si la longueur de la chaîne est supérieure à 26, il suffit alors de la convertir en chaîne. Ici, nous écrirons la même logique dans différents paramètres régionaux.
#include <bits/stdc++.h> using namespace std; const int MAX_CHAR = 26; int minChanges(string &str) { int n = str.length(); if (n > MAX_CHAR) return -1; int dist_count = 0; int count[MAX_CHAR] = {0}; for (int i = 0; i < n; i++) { if (count[str[i] - 'a'] == 0) dist_count++; count[(str[i] - 'a')]++; } return (n - dist_count); } int main() { string str = "aebaecedabbeedee"; cout << minChanges(str); return 0; }
11
import java.lang.*; import java.util.*; public class tutorialspoint { static final int MAX_CHAR = 26; public static int minChanges(String str) { int n = str.length(); if (n > MAX_CHAR) return -1; int dist_count = 0; int count[] = new int[MAX_CHAR]; for(int i = 0; i < MAX_CHAR; i++) count[i] = 0; for (int i = 0; i < n; i++) { if(count[str.charAt(i)-'a'] == 0) dist_count++; count[str.charAt(i)-'a']++; } return (n-dist_count); } public static void main (String[] args) { String str = "aebaecedabbeedee"; System.out.println(minChanges(str)); } }
11
MAX_CHAR = [26] def minChanges(str): n = len(str ) if (n > MAX_CHAR[0]): return -1 dist_count = 0 count = [0] * MAX_CHAR[0] for i in range(n): if (count[ord(str[i]) - ord('a')] == 0) : dist_count += 1 count[(ord(str[i]) - ord('a'))] += 1 return (n - dist_count) if __name__ == '__main__': str = "aebaecedabbeedee" print(minChanges(str))
11
Aujourd'hui, dans cet article, nous avons appris à rendre toutes les sous-chaînes différentes avec un minimum de modifications. Ici, nous avons créé quelques codes possibles en suivant l'algorithme décrit en C++, Java et Python. J'espère que cela vous aidera à acquérir une compréhension plus complète du sujet.
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!