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'