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

Vérifie si la chaîne donnée est un commentaire

WBOY
Libérer: 2023-08-26 12:37:09
avant
1089 Les gens l'ont consulté

Vérifie si la chaîne donnée est un commentaire

En programmation informatique, les commentaires sont du texte écrit en code source mais ignoré par le compilateur ou l'interprète. Ils sont utilisés pour assurer la lisibilité du code en décrivant le code et ses fonctionnalités à une personne lisant le code autre que le compilateur ou l'interpréteur. Ils ne sont pas exécutés et n’affectent pas la fonctionnalité du programme dans son ensemble ; ils fournissent simplement des conseils au programmeur. Chaque langage de programmation possède une syntaxe différente pour exprimer les commentaires. Voici quelques exemples -

  • C/C++ - En C ou C++, les commentaires sur une seule ligne commencent par "//" et les commentaires sur plusieurs lignes sont entourés de "/*" et "*/".

// Single-lined comment
/* Multi-
lined
comment */
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • Java - En Java, les commentaires sur une seule ligne commencent par "//" et les commentaires sur plusieurs lignes sont entourés de "/*" et "*/".

// Single-lined comment
/* Multi-
lined
comment */
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • Python - En Python, les commentaires sur une seule ligne commencent par # et les guillemets triples peuvent être utilisés pour écrire des chaînes multilignes sans variables assignées.

    < /里>
# Single-lined comment
'''
Multi-
lined
comment
'''
Copier après la connexion
  • Javascript - En Javascript, les commentaires sur une seule ligne commencent par "//" et les commentaires sur plusieurs lignes sont entourés de "/*" et "*/".

// Single-lined comment
/* Multi-
lined
comment */
Copier après la connexion
Copier après la connexion
Copier après la connexion

Énoncé du problème

Étant donné une chaîne. Vérifie si la chaîne est un commentaire en C++.

Exemple 1

Input: ‘/hello world */’
Copier après la connexion
Output: FALSE
Copier après la connexion

Explication - La chaîne d'entrée ne commence ni par // ni entourée de /* et */. La chaîne n'est donc pas un commentaire en C++.

Exemple 2

Input: ‘//hello world */’
Copier après la connexion
Output: TRUE
Copier après la connexion
Copier après la connexion

Instructions - La chaîne d'entrée commence par //. Il s’agit donc d’une annotation en C++.

Méthode 1 : Commentaire sur une seule ligne

Les commentaires sur une seule ligne ne s'étendent que sur une seule ligne et peuvent être identifiés en C++ par le "//" devant le commentaire, c'est-à-dire que les commentaires sur une seule ligne en C++ commencent toujours par "//". Ainsi, pour vérifier la présence d'un commentaire sur une seule ligne dans une chaîne donnée, nous prenons les deux premiers caractères de la chaîne et vérifions s'ils sont "//", la chaîne peut alors être appelée un commentaire sur une seule ligne, peu importe ce qui se trouve après "" //' personnage.

pseudocode

procedure isComment (string)
   if string[0] == ‘/’ and string[1] == ‘/’
      ans = TRUE
   end if
   ans = FALSE
end procedure
Copier après la connexion

Exemple

Ce qui suit est l'implémentation C++ de la méthode ci-dessus.

Dans le programme ci-dessous, nous vérifions les deux premiers caractères de la chaîne d'entrée pour vérifier un commentaire sur une seule ligne.

#include <iostream>
#include <string>
using namespace std;
// Function to check if the string is a single-lined comment
bool isComment(string str){    

   // Single-lined comment if first two characters are '/'
   if (str[0] == '/' && str[1] == '/') {
      return true;
   }
   return false;
}
int main(){
   string input = "/hello world */";
   cout << "Input String: "<< input << endl;
   if (isComment(input)) {
      cout << "The input string is a comment." << endl;
   } else {
      cout << "The input string is not a comment." << endl;
   }
   return 0;
}
Copier après la connexion

Sortie

Lorsque vous compilez le programme ci-dessus, il produira le résultat suivant -

Input String: /hello world */
The input string is not a comment.
Copier après la connexion

Complexité temporelle - O(1), tout comme dans la fonction isComment(), nous vérifions les deux premiers caractères à l'aide d'un index qui prend un temps constant.

Complexité de l'espace - O(1) puisqu'aucun espace supplémentaire n'est utilisé.

Méthode 2 : commentaires sur plusieurs lignes

Les commentaires multilignes s'étendent sur plusieurs lignes et sont reconnus en C++ sous la forme de parenthèses "/*" et "*/". Ainsi, pour vérifier les commentaires multilignes dans une chaîne donnée, nous prenons les deux premiers caractères de la chaîne et vérifions s'ils sont "/*", et vérifions les deux derniers caractères et vérifions s'ils sont "*/", puis la chaîne peut être appelée un commentaire multiligne, quel que soit ce qui se trouve entre '/*' et '*/'.

Input: ‘/* hello world */’
Copier après la connexion
Output: TRUE
Copier après la connexion
Copier après la connexion

Explication - La chaîne d'entrée est contenue entre "/*" et "*/", c'est donc une chaîne en C++.

pseudocode

procedure isComment (string)
   n = string.length
   if (string[0] == ‘/’ and string[1] == ‘*’) and (string[n - 1] == ‘/’ and string[n - 2] == ‘*’)
      ans = TRUE
   end if
   ans = FALSE
end procedure
Copier après la connexion

Exemple : implémentation C++

Dans le programme ci-dessous, nous vérifions si la chaîne d'entrée est contenue entre "/*" et "*/".

#include <iostream>
#include <string>
using namespace std;

// Function to check for multi-lined comment
bool isComment(string str){
   int n = str.length();
   
   // Multi-lined comment if first two characters are '/*' and last two characters are '*/'
   if ((str[0] == '/' && str[1] == '*') && (str[n-1] == '/' && str[n-2] == '*')) {
      return true;
   }
   return false;
}
int main(){
   string input = "/* hello world */";
   cout << "Input String: " << input << endl;
   if (isComment(input)) {
      cout << "The input string is a comment." << endl;
   } else {
      cout << "The input string is not a comment." << endl;
   }
   return 0;
}
Copier après la connexion

Sortie

Lorsque vous compilez le programme ci-dessus, il produira le résultat suivant -

Input String: /* hello world */
The input string is a comment.
Copier après la connexion

Complexité temporelle - O(1), tout comme dans la fonction isComment(), nous utilisons l'indexation qui prend un temps constant pour vérifier les deux premiers et les deux derniers caractères.

Complexité de l'espace - O(1) puisqu'aucun espace supplémentaire n'est utilisé.

Méthode 3 : Commentaires sur une seule et plusieurs lignes

Pour une chaîne donnée, pour déterminer si le commentaire est un commentaire sur une seule ligne ou un commentaire sur plusieurs lignes, nous combinons les deux méthodes ci-dessus, où le commentaire sur une seule ligne commence par "//" et le commentaire sur plusieurs lignes est entouré de "/*" et "* /" au milieu.

Input: ‘/&* hello world */’
Copier après la connexion
Output: Not a comment
Copier après la connexion

pseudocode

procedure isComment (string)
   n = string.length
   if string[0] == ‘/’ and string[1] == ‘/’
      ans = 1
   else if (string[0] == ‘/’ and string[1] == ‘*’) and (string[n - 1] == ‘/’ and string[n - 2] == ‘*’)
      ans = 2
   end if
   ans = 0
end procedure
Copier après la connexion

Exemple : implémentation C++

Dans le programme ci-dessous, étant donné une chaîne, nous vérifions s'il s'agit d'un commentaire sur une seule ligne, d'un commentaire sur plusieurs lignes, ou pas d'un commentaire du tout

#include <iostream>
#include <string>
using namespace std;

// FUunction to check if the input string is comment
int isComment(string str){
   int n = str.length();
   
   // SIngle-lined comment if starting with '//'
   if (str[0] == '/' && str[1] == '/') {
      return 1;
   } 
   
   // Multi-lined comment if enclosed in '/*' and '*/'
   else if ((str[0] == '/' && str[1] == '*') && (str[n-1] == '/' && str[n-2] == '*')) {
      return 2;
   }
   
   // Not a comment
   return 0;
}
int main(){
   string input = "// hello world */";
   cout << "Input String: " << input << endl;
   if (isComment(input) == 1) {
      cout << "The input string is a single-lined comment." << endl;
   } 
   else if (isComment(input) == 2) {
      cout << "The input string is a multi-lined comment." << endl;
   } 
   else {
      cout << "The input string is not a comment." << endl;
   }
   return 0;
}
Copier après la connexion

Sortie

Input String: // hello world */
The input string is a single-lined comment.
Copier après la connexion

Complexité temporelle - O(1), tout comme dans la fonction isComment(), nous vérifions le spécificateur de commentaire en utilisant un index qui prend un temps constant.

Complexité spatiale - O(1) puisqu'aucun espace supplémentaire n'est utilisé.

Conclusion

Pour résumer, différents langages de programmation ont des syntaxes différentes pour exprimer des commentaires. Dans l’approche ci-dessus, les annotations en C ou C++ ont été identifiées avec une complexité temporelle et spatiale O(1).

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