首頁 >後端開發 >C++ >檢查給定的字串是否為註釋

檢查給定的字串是否為註釋

WBOY
WBOY轉載
2023-08-26 12:37:091106瀏覽

檢查給定的字串是否為註釋

在電腦程式設計中,註解是用原始程式碼寫的文本,但會被編譯器或解釋器忽略。它們用於透過為編譯器或解釋器之外的閱讀程式碼的人描述程式碼及其功能來提供程式碼的可讀性。它們不會被執行,也不影響整個程式的功能,它們只是為程式設計師提供指導。每種程式語言都有不同的語法來表示註釋。以下是一些範例 -

  • C/C - 在 C 或 C 中,單行註解以「//」開頭,多行註解包含在「/*」和「*/」中。

// Single-lined comment
/* Multi-
lined
comment */
  • Java - 在 Java 中,單行註解以「//」開頭,多行註解包含在「/*」和「*/」中。

// Single-lined comment
/* Multi-
lined
comment */
  • Python - 在Python中,單行註解以#開頭,三引號可用於編寫未指派變數的多行字串。

# Single-lined comment
'''
Multi-
lined
comment
'''
  • Javascript - 在 Javascript 中,單行註解以「//」開頭,多行註解包含在「/*」和「*/」中。

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

問題陳述

給定一個字串。檢查該字串是否是 C 中的註解。

範例 1

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

說明 - 輸入字串既不以 // 開頭,也不被 /* 和 */ 括起來。所以該字串不是 C 中的註解。

範例 2

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

說明 - 輸入字串以//開頭。因此,它是 C 中的註釋。

方法一:單行註解

單行註解僅跨越一行,在 C 中可以透過註解前面的「//」來識別,即 C 中的單行註解始終以「//」開頭。因此,為了檢查給定字串中的單行註釋,我們取出字串中的前兩個字元並檢查它們是否為“//”,那麼無論“”後面是什麼,該字串都可以稱為單行註釋//' 字元。

虛擬程式碼

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

範例

下面是上述方法的 C 實作。

在下面的程式中,我們檢查輸入字串的前兩個字元以檢查單行註解。

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

輸出

當你編譯上面的程式時,它將產生以下輸出 -

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

時間複雜度 - O(1),就像在 isComment() 函數中一樣,我們使用需要恆定時間的索引來檢查前兩個字元。

空間複雜度 - O(1),因為沒有使用額外的空間。

方法 2:多行註解

多行註解跨越多行,並且可以在 C 中識別為「/*」和「*/」括起來。因此,為了檢查給定字串中的多行註釋,我們取出字串中的前兩個字元並檢查它們是否為“/*”,並檢查最後兩個字元並檢查它們是否為“*/”,然後字串可以稱為多行註釋,無論'/*' 和'*/' 之間是什麼。

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

說明 - 輸入字串包含在「/*」和「*/」中,因此它是 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

範例:C 實作

在下面的程式中,我們檢查輸入字串是否包含在「/*」和「*/」之間。

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

輸出

當你編譯上面的程式時,它將產生以下輸出 -

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

時間複雜度 - O(1),就像在 isComment() 函數中一樣,我們使用需要恆定時間的索引來檢查前兩個和最後兩個字元。

空間複雜度 - O(1),因為沒有使用額外的空間。

方法 3:單行與多行註解

對於給定的字串,要判斷註解是單行註解還是多行註釋,我們結合上述兩種方法,其中單行註解以「//」開頭,多行註解被括起來在「/*」和在「*/」中。

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

範例:C 實作

在下面的程式中,給定一個字串,我們檢查它是單行註解、多行註解還是根本不是註解

#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.

時間複雜度 - O(1),就像在 isComment() 函數中一樣,我們使用需要恆定時間的索引來檢查註解說明符。

空間複雜度 - O(1),因為沒有使用額外的空間。

結論

總而言之,不同的程式語言有不同的語法來表示註解。在上述方法中,C 或 C 中的註釋已被識別,時間和空間複雜度為 O(1)。

以上是檢查給定的字串是否為註釋的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除