Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Rentetan vokal dan konsonan berselang seli dalam C/C++

Rentetan vokal dan konsonan berselang seli dalam C/C++

PHPz
PHPzke hadapan
2023-08-27 08:45:28861semak imbas

Rentetan vokal dan konsonan berselang seli dalam C/C++

Diberi rentetan, susun semula aksara dalam rentetan supaya vokal dan konsonan menempati kedudukan berselang-seli. Jika rentetan tidak boleh disusun semula seperti yang diterangkan di atas, cetak "mustahil".

Turutan antara vokal dan susunan antara konsonan hendaklah kekal sama.

Input: abce
Output: abec

Penjelasan

  • Hitung bilangan vokal dan konsonan dalam rentetan.

  • Jika perbezaan bilangan vokal dan konsonan melebihi 1, kembalikan "mustahil".

  • Jika terdapat lebih banyak vokal daripada konsonan dalam rentetan, cetak vokal pertama dahulu dan kemudian ulangi untuk rentetan yang tinggal.

  • Jika terdapat lebih banyak konsonan daripada vokal dalam rentetan, cetak konsonan pertama dahulu dan kemudian ulangi untuk rentetan yang tinggal.

  • Jika bilangan vokal dan konsonan sama, bandingkan vokal pertama dan konsonan pertama dan cetak yang lebih kecil dahulu.

Contoh

#include <iostream>
using namespace std;
bool isVowel(char ch) {
   if (ch == &#39;a&#39; || ch == &#39;e&#39; || ch == &#39;i&#39; ||
      ch == &#39;o&#39; || ch ==&#39;u&#39;)
   return true;
   return false;
}
string createAltStr(string str1, string str2,
int start, int l) {
   string finalStr = "";
   for (int i=0, j=start; j<l; i++, j++)
      finalStr = (finalStr + str1.at(i)) + str2.at(j);
   return finalStr;
}
string findAltStr(string str) {
   int nv = 0, nc = 0;
   string vstr = "", cstr = "";
   int l = str.size();
   for (int i=0; i<l; i++) {
      char ch = str.at(i);
      if (isVowel(ch)) {
         nv++;
         vstr = vstr + ch;
      } else {
         nc++;
         cstr = cstr + ch;
      }
   }
   if (abs(nv-nc) >= 2)
      return "no such string";
   if (nv > nc)
      return (vstr.at(0) + createAltStr(cstr, vstr, 1, nv));
   if (nc > nv)
      return (cstr.at(0) + createAltStr(vstr, cstr, 1, nc));
   if (cstr.at(0) < vstr.at(0))
      return createAltStr(cstr, vstr, 0, nv);
   return createAltStr(vstr, cstr, 0, nc);
}
int main() {
   string str = "abde";
   cout << findAltStr(str);
   return 0;
}

Atas ialah kandungan terperinci Rentetan vokal dan konsonan berselang seli dalam C/C++. 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