Home >Backend Development >C++ >Checks whether the given string is a comment

Checks whether the given string is a comment

WBOY
WBOYforward
2023-08-26 12:37:091129browse

Checks whether the given string is a comment

In computer programming, comments are text written in source code but ignored by the compiler or interpreter. They are used to provide code readability by describing the code and its functionality to a person reading the code other than the compiler or interpreter. They are not executed and do not affect the functionality of the overall program; they simply provide guidance to the programmer. Every programming language has a different syntax for expressing comments. Here are some examples -

  • C/C - In C or C, single-line comments begin with "//" and multi-line comments are enclosed in "/*" and "*/".

// Single-lined comment
/* Multi-
lined
comment */
  • Java - In Java, single-line comments start with "//" and multi-line comments are enclosed in "/*" and "*/".

// Single-lined comment
/* Multi-
lined
comment */
  • Python - In Python, single-line comments start with #, and triple quotes can be used to write multi-line strings without assigned variables.

# Single-lined comment
'''
Multi-
lined
comment
'''
  • Javascript - In Javascript, single-line comments begin with "//" and multi-line comments are enclosed in "/*" and "*/".

// Single-lined comment
/* Multi-
lined
comment */

Problem Statement

Given a string. Checks whether the string is a comment in C.

Example 1

Input: ‘/hello world */’
Output: FALSE

Description - The input string neither begins with // nor is enclosed by /* and */. So the string is not a comment in C.

Example 2

Input: ‘//hello world */’
Output: TRUE

Description - The input string starts with //. Therefore, it is an annotation in C.

Method 1: Single line comment

A single-line comment spans only one line and can be identified in C by the "//" in front of the comment, that is, a single-line comment in C always starts with "//". So, to check for a single line comment in a given string, we take the first two characters in the string and check if they are "//", then the string can be called a single line comment no matter what comes after "" //' character.

pseudocode

procedure isComment (string)
   if string[0] == ‘/’ and string[1] == ‘/’
      ans = TRUE
   end if
   ans = FALSE
end procedure

Example

The following is the C implementation of the above method.

In the following program, we check the first two characters of the input string to check for single-line comments.

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

Output

When you compile the above program, it will produce the following output -

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

Time Complexity - O(1), just like in the isComment() function, we use an index that takes constant time to check the first two characters.

Space Complexity - O(1) because no extra space is used.

Method 2: Multi-line comments

Multiline comments span multiple lines and are recognized in C as "/*" and "*/" brackets. So, to check for multi-line comments in a given string, we take the first two characters in the string and check if they are "/*", and check the last two characters and check if they are "*/", Then the string can be called a multiline comment, whatever is between '/*' and '*/'.

Input: ‘/* hello world */’
Output: TRUE

Explanation - The input string is contained in "/*" and "*/", so it is a string in 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

Example: C implementation

In the following program, we check whether the input string is contained between "/*" and "*/".

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

Output

When you compile the above program, it will produce the following output -

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

Time Complexity - O(1), just like in isComment() function we use indexing which takes constant time to check the first two and last two characters.

Space Complexity - O(1) because no extra space is used.

Method 3: Single-line and multi-line comments

For a given string, to determine whether the comment is a single-line comment or a multi-line comment, we combine the above two methods, where the single-line comment starts with "//" and the multi-line comment is enclosed in "/*" and "*/"middle.

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

Example: C implementation

In the following program, given a string, we check whether it is a single-line comment, a multi-line comment, or not a comment at all

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

Output

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

Time complexity - O(1), just like in isComment() function we check the comment specifier using an index which takes constant time.

Space complexity - O(1), because no extra space is used.

in conclusion

In summary, different programming languages ​​have different syntaxes for expressing comments. In the above method, annotations in C or C have been identified with time and space complexity of O(1).

The above is the detailed content of Checks whether the given string is a comment. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete