C++程式:計算使檔名有效的操作次數


假設我們有一個包含n個字母的字串S。Amal正試圖在一個社交網路上傳送一個檔案,但是出現了一個意想不到的問題。如果檔名包含三個或三個以上連續的“x”,系統認為檔案內容與社交網路不符。我們有檔名S,我們需要檢查要刪除的最小字元數,以便名稱不包含“xxx”作為子字串。

問題類別

為了解決這個問題,我們需要操作字串。程式語言中的字串是一系列儲存在特定陣列型別中的字元。幾種語言將字串指定為一種特定資料型別(例如Java、C++、Python);而其他一些語言則將字串指定為字元陣列(例如C)。字串在程式設計中非常重要,因為它們通常是各種應用程式中首選的資料型別,並且用作輸入和輸出的資料型別。有各種字串操作,例如字串搜尋、子字串生成、字串剝離操作、字串轉換操作、字串替換操作、字串反轉操作等等。檢視下面的連結,瞭解如何在C/C++中使用字串。

https://tutorialspoint.tw/cplusplus/cpp_strings.htm

https://tutorialspoint.tw/cprogramming/c_strings.htm

因此,如果我們問題的輸入類似於S = "lkxxxiii",則輸出將為1,因為我們可以得到有效的字串"lkxxiii"。

步驟

為了解決這個問題,我們將遵循以下步驟:

c := 0
n := size of S
for initialize i := 0, when i < n - 2, update (increase i by 1), do:
   if substring of S of size 3, starting from index i to is same as "xxx", then:
      (increase c by 1)
return c

示例

讓我們看看下面的實現,以便更好地理解:

#include <bits/stdc++.h>
using namespace std;
int solve(string S){
   int c = 0;
   int n = S.size();
   for (int i = 0; i < n - 2; i++){
      if (S.substr(i, 3) == "xxx")
         c++;
   }
   return c;
}
int main(){
   string S = "lkxxxiii";
   cout << solve(S) << endl;
}

輸入

"lkxxxiii"

輸出

1

更新於:2022年4月8日

瀏覽量:134

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告