Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 문자열에서 최대 길이의 짝수 단어 찾기

이 문제에서는 공백으로 구분된 여러 단어로 이루어진 문자열 str이 주어집니다. 우리의 목표는 문자열에서 길이가 가장 긴 짝수 단어를 찾는 것입니다.

즉, 공백 사이에 있는 단어 중 길이가 최대이면서 그 길이가 짝수인 단어를 찾아야 합니다.

문제 예시

예제를 통해 문제를 더 자세히 이해해 보겠습니다.

입력 : str = "learn programming at TutorialsPoint"
출력 : TutorialsPoint

설명

짝수 길이를 가진 단어는 TutorialsPoint입니다.

해결 방법

이 문제를 해결하는 간단한 방법은, 지금까지 찾은 최대 길이보다 길이가 더 긴 짝수 단어를 계속해서 탐색하는 것입니다. 초기 최대 단어 길이(maxString)는 0으로 설정합니다.

알고리즘

1단계 − 문자열을 처음부터 끝까지 순회합니다.

2단계 − 현재 단어의 길이가 짝수이고, 이전에 발견한 최대 길이보다 큰지 확인합니다.

3단계 − 조건을 만족하는 단어를 결과로 반환합니다.

구현 예제

다음은 위 해결 방법의 동작을 보여주는 C++ 프로그램입니다.

#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<<"최대 길이의 짝수 단어는 '"<<findMaxEvenLenWord(str)<<"'입니다";
   return 0;
}

실행 결과

최대 길이의 짝수 단어는 'Tutorialspoint'입니다