ในปัญหานี้ เราได้รับสตริง str[] ขนาด N และจำนวนเต็ม X ภารกิจของเราคือ สร้างโปรแกรมพิมพ์สระเสียงแรก X ตัวจากสตริง
เราจะพิมพ์สระเสียงแรก X ตัวจากสตริง และถ้ามีสระเสียงน้อยกว่า X ตัว ให้พิมพ์ -1
มาดูตัวอย่างเพื่อเข้าใจปัญหา
Input: str = "learn C programming language", X = 5 Output: e, a, o, a, i สระเสียงคือ a, e, i, o, u
วิธีการแก้ปัญหา
วิธีแก้ปัญหาแบบง่ายคือการเดินทางผ่านสตริงตัวละตัว และเก็บสระเสียงทั้งหมดของสตริงไว้ในสตริงสระเสียง และถ้าความยาวของสตริงนี้เท่ากับ X ให้คืนค่า ถ้าสระเสียงทั้งหมดของสตริงไม่สามารถทำให้ครบ X ได้ ให้คืนค่า -1
ตัวอย่าง
โปรแกรมสาธิตการทำงานของวิธีแก้ปัญหาของเรา
#include <iostream> #include <string.h> using namespace std; bool isaVowel(char c){ c = tolower(c); if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') return true; return false; } string findXVowelsString(string s, int x){ string vowelsString = ""; for (int i = 0; i < s.length(); i++) { if (isaVowel(s[i])) vowelsString += s[i]; if (vowelsString.length() == x) { return vowelsString; } } return "-1"; } int main(){ string str = "learn C programming language"; int x = 5; cout<<"The first "<<x<<" vowels from the string are "<<findXVowelsString(str, x); return 0; }
เอาต์พุต
The first 5 vowels from the string are eaoai