Rumah >pembangunan bahagian belakang >C++ >Menyemak sama ada rentetan boleh dibahagikan kepada dua subrentetan, setiap satu mengandungi bilangan vokal yang sama
Selamat datang ke panduan mendalam yang lain mengenai topik penyelesaian masalah yang menarik dalam C++. Kali ini, kita akan menangani masalah menentukan sama ada rentetan boleh dibahagikan kepada dua subrentetan, setiap satu mengandungi bilangan vokal yang sama. Masalah ini adalah latihan yang sangat baik untuk mengasah kemahiran manipulasi rentetan dan pengiraan vokal anda.
Memandangkan rentetan, matlamat kami adalah untuk menentukan sama ada ia boleh dibahagikan kepada dua subrentetan bukan kosong supaya kedua-dua substring mempunyai bilangan vokal yang sama. Vokal dalam abjad Inggeris ialah 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'.
Pendekatan kami ialah mengira jumlah vokal dalam rentetan terlebih dahulu. Jika jumlah bilangannya tidak genap, kita dengan serta-merta mengetahui bahawa adalah mustahil untuk membahagikan rentetan kepada dua subrentetan dengan bilangan vokal yang sama.
Jika jumlah kiraan adalah genap, maka kami mengulangi rentetan dan mengira vokal berturut-turut yang ditemui. Jika pada bila-bila masa kiraan larian kita menyamai separuh daripada jumlah kiraan, kita boleh membahagikan rentetan pada titik itu kepada dua subrentetan dengan bilangan vokal yang sama.
Ini adalah kod C++ untuk menyelesaikan masalah ini−
#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.
Mari kita gambarkan masalah ini dan penyelesaiannya dengan contoh -
Anggap rentetan itu "cantik".
Kami mula-mula mengira jumlah bilangan vokal dalam "cantik", iaitu 5. Oleh kerana ini bukan nombor genap, kita segera mengetahui bahawa rentetan itu tidak boleh dibahagikan kepada dua subrentetan dengan bilangan vokal yang sama.
Jadi outputnya ialah "Tidak, rentetan tidak boleh dipecahkan kepada dua subrentetan dengan bilangan vokal yang sama."
Atas ialah kandungan terperinci Menyemak sama ada rentetan boleh dibahagikan kepada dua subrentetan, setiap satu mengandungi bilangan vokal yang sama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!