Maison >développement back-end >C++ >Vérifie si la chaîne donnée est un commentaire

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

WBOY
WBOYavant
2023-08-26 12:37:091124parcourir

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 */
  • 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 */
  • 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
'''
  • 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 */

É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 */’
Output: FALSE

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 */’
Output: TRUE

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

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;
}

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.

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 */’
Output: TRUE

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

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;
}

Sortie

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

Input String: /* hello world */
The input string is a comment.

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 */’
Output: Not a comment

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

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;
}

Sortie

Input String: // hello world */
The input string is a single-lined comment.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer