Cho chuỗi str. Nhiệm vụ: tìm từ đầu tiên có độ dài chẵn và lớn nhất.
Ví dụ minh họa
Input: "learn programming at TutorialsPoint" Output: TutorialsPoint
TutorialsPoint dài 14 (chẵn), dài nhất trong các từ chẵn.
Phương pháp giải
Duyệt chuỗi, đếm độ dài từ hiện tại. Khi gặp khoảng trắng, kiểm tra độ dài chẵn và lớn hơn max hiện tại. Cập nhật vị trí và độ dài max.
Ví dụ chương trình
#include <bits/stdc++.h>
using namespace std;
string findMaxEvenLenWord(string str) {
int len = str.length(), i = 0;
int currLen = 0, maxLen = 0, startPos = -1;
while (i < len) {
if (str[i] == ' ') {
if (currLen % 2 == 0 && currLen > maxLen) {
maxLen = currLen;
startPos = i - currLen;
}
currLen = 0;
} else currLen++;
i++;
}
// Kiểm tra từ cuối
if (currLen % 2 == 0 && currLen > maxLen) {
maxLen = currLen;
startPos = i - currLen;
}
if (startPos == -1) return "Không tìm thấy";
return str.substr(startPos, maxLen);
}
int main() {
string str = "Learn programming at Tutorialspoint";
cout << "Từ chẵn dài nhất: '" << findMaxEvenLenWord(str) << "'";
return 0;
}
Kết quả
Từ chẵn dài nhất: 'Tutorialspoint'