ในปัญหานี้ เราเป็นสตริง 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'