歡迎閱讀另一本關於 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中文網其他相關文章!