이 문제에서는 공백으로 구분된 여러 단어로 이루어진 문자열 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'입니다