ในปัญหานี้ เราเป็นสตริง str ที่ประกอบด้วยคำที่คั่นด้วยจุลภาค งานของเราคือ ค้นหาความยาวสูงสุดแรก แม้แต่คำ จากสตริง .
เราจำเป็นต้องค้นหาคำว่า 'สตริงระหว่างช่องว่างสองช่อง' ที่ใหญ่ที่สุดซึ่งมีความยาวสูงสุดและเท่ากัน
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
Input : str = "learn programming at TutorialsPoint" Output : TutorialsPoint
คำอธิบาย −
The string with even length is TutorialsPoint.
แนวทางการแก้ปัญหา
วิธีแก้ปัญหาอย่างง่ายคือเพียงแค่ค้นหาสตริงที่มีความยาวมากกว่าสตริงปัจจุบัน เริ่มต้นความยาว maxString เป็น 0
อัลกอริทึม
ขั้นตอนที่ 1 − วนซ้ำบนสตริง
ขั้นตอนที่ 2 - ตรวจสอบว่าคำปัจจุบันมีความยาวเท่ากันหรือไม่ และความยาวของคำมากกว่าคำสุดท้ายที่มากกว่า
ขั้นตอนที่ 3 − ส่งคืนคำ
ตัวอย่าง
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
#include <bits/stdc++.h>
using namespace std;
string findMaxEvenLenWord(string str) {
int len = str.length();
int i = 0; int currWordlen = 0;
int maxWordLen = 0;
int stringPointer = -1;
while (i < len) {
if (str[i] == ' ') {
if (currWordlen % 2 == 0) {
if (maxWordLen < currWordlen) {
maxWordLen = currWordlen;
stringPointer = i - currWordlen;
}
}
currWordlen = 0;
}
else {
currWordlen++;
}
i++;
}
if (currWordlen % 2 == 0) {
if (maxWordLen < currWordlen) {
maxWordLen = currWordlen;
stringPointer = i - currWordlen;
}
}
if (stringPointer == -1)
return "Not Found!";
return str.substr(stringPointer, maxWordLen);
}
int main() {
string str = "Learn programming at Tutorialspoint";
cout<<"The maximum length even word is '"<<findMaxEvenLenWord(str)<<"'";
return 0;
} ผลลัพธ์
The maximum length even word is 'Tutorialspoint'