首頁 >後端開發 >C++ >檢查一個字串是否可以被分成兩個子字串,每個子字串包含相等數量的元音字母

檢查一個字串是否可以被分成兩個子字串,每個子字串包含相等數量的元音字母

WBOY
WBOY轉載
2023-09-09 13:41:091448瀏覽

檢查一個字串是否可以被分成兩個子字串,每個子字串包含相等數量的元音字母

歡迎閱讀另一本關於 C 中令人著迷的問題解決主題的深入指南。這次,我們將解決確定一個字串是否可以分為兩個子字串的問題,每個子字串包含相同數量的元音。這個問題是磨練字串操作和元音計數技能的絕佳練習。

問題陳述

給定一個字串,我們的目標是確定它是否可以劃分為兩個非空子字串,使得兩個子字串具有相同數量的元音。英文字母中的母音是 'a'、'e'、'i'、'o'、'u'、'A'、'E'、'I'、'O'、'U'。

方法

我們的方法是先計算字串中元音的總數。如果總數不是偶數,我們立即知道不可能將字串拆分為兩個元音數量相等的子字串。

如果總計數是偶數,則我們將迭代該字串,並對遇到的元音進行連續計數。如果在任何時候我們的運行計數等於總計數的一半,我們可以將該點的字串拆分為兩個元音數量相同的子字串。

範例

這是解決此問題的 C 程式碼

#include<bits/stdc++.h>
using namespace std;

bool isVowel(char c) {
   return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || 
      c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U');
}

bool canBeSplit(string s) {
   int totalVowels = 0;
   for (char c : s) {
      if (isVowel(c))
         totalVowels++;
   }
   if (totalVowels % 2 != 0)
      return false;
   
   int halfVowels = 0;
   for (char c : s) {
      if (isVowel(c))
         halfVowels++;
      if (halfVowels == totalVowels / 2)
         return true;
   }
   return false;
}

int main() {
   string s="beautiful";
   if (canBeSplit(s))
      cout << "Yes, the string can be split into two substrings with equal number of vowels." << endl;
   else
      cout << "No, the string cannot be split into two substrings with equal number of vowels." << endl;
   return 0;
}

輸出

No, the string cannot be split into two substrings with equal number of vowels.

測試案例範例

讓我們用一個例子來說明這個問題及其解決方案 -

假設字串是「美麗的」。

  • 我們先計算「beautiful」中母音的總數,即 5。由於這不是偶數,所以我們立即知道該字串不能分成兩個元音數量相等的子字串。

  • 因此,輸出將為「不,字串不能拆分為兩個元音數量相等的子字串。」

#結論

透過本 C 指南,我們學習如何檢查一個字串是否可以分成兩個子字串,使得每個子字串包含相同數量的元音。此問題是 C 語言中字串操作和字元計數的有用練習。

以上是檢查一個字串是否可以被分成兩個子字串,每個子字串包含相等數量的元音字母的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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