Rumah >pembangunan bahagian belakang >C++ >Menyemak sama ada rentetan boleh dibahagikan kepada dua subrentetan, setiap satu mengandungi bilangan vokal yang sama

Menyemak sama ada rentetan boleh dibahagikan kepada dua subrentetan, setiap satu mengandungi bilangan vokal yang sama

WBOY
WBOYke hadapan
2023-09-09 13:41:091462semak imbas

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.

Pernyataan Masalah

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

kaedah

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.

Contoh

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

Output

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

Contoh kes ujian

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

  • KESIMPULAN

Dengan panduan C++ ini, kami belajar cara menyemak sama ada rentetan boleh dibahagikan kepada dua subrentetan supaya setiap subrentetan mengandungi bilangan vokal yang sama. Masalah ini ialah latihan yang berguna dalam manipulasi rentetan dan pengiraan aksara dalam bahasa C++.

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam