Maison >développement back-end >C++ >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 */
Étant donné une chaîne. Vérifie si la chaîne est un commentaire en C++.
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++.
Input: ‘//hello world */’
Output: TRUE
Instructions - La chaîne d'entrée commence par //. Il s’agit donc d’une annotation en C++.
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.
procedure isComment (string) if string[0] == ‘/’ and string[1] == ‘/’ ans = TRUE end if ans = FALSE end procedure
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; }
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é.
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++.
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
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; }
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é.
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
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
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; }
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é.
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!