Maison > développement back-end > C++ > le corps du texte

Traduisez ce qui suit en chinois selon la condition donnée : Supprimez des caractères pour obtenir la somme d'index de la chaîne vide selon la condition donnée.

WBOY
Libérer: 2023-09-02 15:29:06
avant
1327 Les gens l'ont consulté

Traduisez ce qui suit en chinois selon la condition donnée : Supprimez des caractères pour obtenir la somme dindex de la chaîne vide selon la condition donnée.

Les concepts liés à la manipulation de chaînes, tels que la somme des indices de caractères supprimés pour obtenir une chaîne vide, sont souvent utilisés dans les défis et les compétitions de programmation. Le résultat est ensuite calculé à partir de la somme des indices de caractères éliminés.

Supprimer la somme d'index des caractères pour obtenir une chaîne vide est une idée pratique de manipulation de chaînes qui peut être utilisée pour résoudre diverses difficultés et défis de programmation.

Gestion des problèmes

Nous devons d'abord comprendre l'énoncé du problème et les critères donnés pour trouver le nombre total d'indices de caractères qui sont éliminés pour produire une chaîne vide.

Étant donné une chaîne S, l'objectif est de déterminer le nombre total de caractères qui peuvent être supprimés de S tout en laissant la chaîne vide. Par exemple, si S = "code", les caractères aux positions 0, 4, 5 et 6 peuvent être éliminés pour obtenir une chaîne vide. La somme de ces exposants donne 0 + 4 + 5 + 6 = 15.

Cependant, l'utilisation d'une pile est une stratégie typique pour résoudre ce problème. Nous pouvons parcourir la chaîne S et déterminer si chaque caractère peut être supprimé à chaque itération. Si son index peut être supprimé, nous pouvons l'ajouter à la pile. S'il ne peut pas être supprimé, nous pouvons voir si nous pouvons supprimer le personnage en haut de la pile avec les caractères existants. S'il peut être éliminé, nous le faisons et ajoutons son index à l'index du personnage actuel. Ce processus peut être répété jusqu'à ce que tous les caractères de la chaîne aient été traités.

Le pseudocode suivant illustre cette stratégie -

stack = []
sum = 0
for k in range(len(S)):
   if stack and S[k] == S[stack[-1]]:
      stack.pop()
      sum += k + stack[-1] if stack else k
   else:
      stack.append(k)
return sum
Copier après la connexion

Dans ce pseudocode, la variable somme et la pile vide sont initialisées à 0. Utilisez ensuite une boucle for pour parcourir la chaîne S à plusieurs reprises. Vérifiez chaque personnage pour voir s'il peut être supprimé avec le personnage en haut. pile, si la pile n'est pas vide. Si possible, le personnage est supprimé de la pile et la somme de son index et des personnages du jeu est ajoutée à la variable sum. Dans ce cas, nous ajoutons son index à la pile et essayons de le supprimer. Ensuite, nous renvoyons la variable somme.

La complexité temporelle et la complexité spatiale de cette méthode sont toutes deux O(n), où n est la longueur de la chaîne S et n est le nombre maximum de caractères pouvant être supprimés de S.

Grammaire

La syntaxe C++ pour déterminer le nombre total d'indices de caractères éliminés en créant une chaîne vide basée sur une condition spécifiée est la suivante -

Instructions

  • Nous récupérons d'abord la chaîne saisie par l'utilisateur.

  • Nous définissons la valeur de départ de n sur la longueur de la chaîne str.

  • Ensuite, on initialise cnt à 0, ce qui comptera les occurrences du caractère "U".

  • Nous fixons la valeur initiale de sum à 0, ce qui stockera le nombre total d'indices de caractères éliminés.

  • Après cela, nous parcourons str, en vérifiant chaque caractère comme indiqué ci-dessous -

    • Si le caractère est "U", on augmente cnt et on augmente la somme de (n - i - 1) + 2 * cnt.

    • Si le caractère n'est pas "U", on augmente la somme en ajoutant i + 2 * cnt.

  • Enfin, nous affichons la valeur de la somme.

REMARQUE - Étant donné que les détails de cette question ne sont pas explicitement indiqués, ces conditions sont supposées.

{
   string str;
   cin >> str;

   int n = str.size();
   int cnt = 0, sum = 0;
   for (int k = 0; i < n; k++) {
      if (str[k] == 'U') {
         sum += (n - k - 1) + 2 * cnt;
         cnt++;
      } else {
         sum += k + 2 * cnt;
      }
   }
   cout << sum << endl;
}
Copier après la connexion

Algorithme

Un algorithme C++ pour compter le nombre total d'indices de caractères éliminés en créant une chaîne vide dans des conditions définies -

  • Étape 1 - Tout d'abord, définissez une variable de chaîne et entrez la chaîne fournie par l'utilisateur.

  • Étape 2 - Créez une pile pour contenir les caractères de la chaîne.

  • Étape 3 - Saisissez la boucle de chaîne caractère par caractère.

  • Étape 4 - Si le caractère actuel est vide, poussez-le sur la pile.

  • Étape 5 - Si le caractère actuel et le caractère supérieur de la pile sont identiques, retirez le caractère supérieur de la pile.

  • Étape 6 - Si le caractère actuel est différent du caractère en haut de la pile, poussez-le sur la pile.

  • Étape 7 - Seuls les caractères qui ne peuvent pas être effacés resteront dans la pile après la boucle.

  • Étape 8 - Ajoutez l'index des caractères qui est toujours dans la pile.

  • Étape 9 - Afficher le nombre total d'index.

Méthode à suivre

Méthode 1

Calculez la somme des indices de suppression de caractères pour générer une chaîne vide en utilisant la condition suivante -

Dans cet exemple, la chaîne "abacbdc" est utilisée comme entrée. Le code utilise deux indices i et j pour parcourir la chaîne du début à la fin. Les conditions pour supprimer des caractères d'une chaîne sont les suivantes :

Si s[i] et s[j] sont égaux, déplacez les deux indices au centre de la chaîne.

  • Si s[i] est inférieur à s[j], supprimez le caractère à l'index j et augmentez la somme de l'index de l'index i+1.

  • Si s[i] est supérieur à s[j], supprimez le caractère à l'index i et augmentez la somme de l'index de l'index j+1.

Une fois tous les personnages éliminés, signalez le total de l'index à la console.

Veuillez garder à l'esprit qu'il ne s'agit que d'une illustration et que les exigences en matière de suppression de caractères peuvent changer en fonction de la nature du problème.

示例 1

#include <iostream>
#include <string>

using namespace std;

int main() {
   string s = "abacbdc";
   int sum = 0;
   int i = 0;
   int j = s.length() - 1;
   while (i < j) {
      if (s[i] == s[j]) {
         i++;
         j--;
      } else if (s[i] < s[j]) {
         sum += i + 1;
         i++;
         s.erase(j, 1);
         j--;
      } else {
         sum += j + 1;
         j--;
         s.erase(i, 1);
         i++;
      }
   }
   cout << "Sum of indices of characters removed: " << sum << endl;
   return 0;
}
Copier après la connexion

输出

Sum of indices of characters removed: 6
Copier après la connexion

方法2

str 字符串和字符是 sum_of_indices 函数的输入。然后,迭代字符串,确定每个字符是否等于 c。如果是这样,函数会递减循环索引以考虑删除的字符,并将字符的索引添加到运行总数中,然后使用擦除技术从字符串中删除字符。然后该函数返回已消除的字符索引的总数。

示例字符串 str 和字符 c 在 main 函数中定义,这两个输入用于调用 sum_of_indices 函数。总数作为结果打印到控制台。

示例 2

#include <iostream>
#include <string>
using namespace std;
int sum_of_indices(string str, char c) {
   int sum = 0;
   for (int i = 0; i < str.length(); i++) {
      if (str[i] == c) {
         sum += i;
         str.erase(i, 1);
         i--;
      }
   }
   return sum;
}
int main() {
   string str = "abcbcdc";
   char c = 'c';
   int sum = sum_of_indices(str, c);
   cout << "Sum of indices of characters removed to obtain empty string: " << sum << endl;
   return 0;
}
Copier après la connexion

输出

Sum of indices of characters removed to obtain empty string: 9
Copier après la connexion

结论

需要操作字符串及其索引来解决根据提供的条件计算消除的字符索引之和以获得空字符串的问题。为了解决这个问题,循环遍历字符串,如果两个连续字符相同,则在更新索引之前删除它们。一旦我们有了一个空字符串,我们就可以添加被删除的字符的索引以产生一个空字符串。

有许多解决方案需要解决,例如利用堆栈或队列来跟踪要删除的字符,或者使用递归来迭代地从字符串中删除字符。

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!

Étiquettes associées:
source:tutorialspoint.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal