Giới thiệu
Trong hướng dẫn này, chúng ta sẽ tìm chữ cái in hoa (uppercase) đầu tiên xuất hiện trong một chuỗi, sử dụng cả phương pháp lặp (iterative) và đệ quy (recursive).
Ví dụ
Input: "Tutorialspoint"
Output: T
Phương pháp 1: Lặp (Iterative)
#include <bits/stdc++.h>
using namespace std;
char firstUpperCaseChar(string str) {
for (int i = 0; i < str.length(); i++)
if (isupper(str[i])) return str[i];
return 0;
}
int main() {
string str = "Tutorialspoint";
char result = firstUpperCaseChar(str);
if (result == 0) cout << "Không có chữ cái in hoa" << endl;
else cout << result << endl;
return 0;
}
Phương pháp 2: Đệ quy (Recursive)
#include <bits/stdc++.h>
using namespace std;
char firstUpperCaseChar(string str, int i = 0) {
if (str[i] == '\0') return 0;
if (isupper(str[i])) return str[i];
return firstUpperCaseChar(str, i + 1);
}
int main() {
string str = "Tutorialspoint";
char result = firstUpperCaseChar(str);
if (result == 0) cout << "Không có chữ cái in hoa";
else cout << result << endl;
return 0;
}
Kết quả đầu ra
T
Kết luận
Cả hai phương pháp đều cho kết quả đúng. Đệ quy ngắn gọn nhưng dùng bộ nhớ stack; lặp hiệu quả hơn về bộ nhớ. Nếu bạn có thắc mắc, hãy để lại bình luận bên dưới.