Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาความยาวสูงสุดคำคู่แรกจากสตริงใน C++


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