Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm độ dài tối đa từ chẵn đầu tiên từ một chuỗi trong C ++

Trong bài toán này, chúng ta là một chuỗi str bao gồm các từ được phân tách bằng dấu phẩy. Nhiệm vụ của chúng tôi là tìm độ dài tối đa đầu tiên, từ chẵn, từ một chuỗi .

Chúng ta cần tìm từ lớn nhất 'chuỗi giữa hai dấu cách' có độ dài lớn nhất và chẵn.

Hãy lấy một ví dụ để hiểu vấn đề,

Input : str = "learn programming at TutorialsPoint"
Output : TutorialsPoint

Giải thích -

The string with even length is TutorialsPoint.

Phương pháp tiếp cận giải pháp

Một giải pháp đơn giản cho vấn đề là tìm chuỗi có độ dài chẵn lớn hơn chuỗi hiện tại. Khởi tạo độ dài chuỗi max thành 0.

Algoritham

Bước 1 - Lặp lại chuỗi.

Bước 2 - kiểm tra xem từ hiện tại có độ dài chẵn hay không và độ dài của từ lớn hơn từ lớn hơn cuối cùng.

Bước 3 - Trả lời.

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi

#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;
}

Đầu ra

The maximum length even word is 'Tutorialspoint'