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

C++로 문장에서 가장 긴 단어의 길이 구하기

여러 단어로 구성된 문장이 주어졌을 때, 그 문장에서 가장 긴 단어의 길이를 찾아내는 것이 이번 튜토리얼의 목표입니다. 문자열을 한 글자씩 순회하면서 공백을 기준으로 단어를 구분하고, 각 단어의 길이를 비교하는 방식으로 해결할 수 있습니다.

예시

입력: hello I am here
출력: maximum length of a word is: 5

입력: tutorials point is the best learning platform
출력: maximum length of a word is: 9

해결 접근 방법

  • 문장을 하나의 문자열로 입력받습니다.
  • 문장의 끝까지 반복문을 수행하며 문자열을 탐색합니다.
  • 공백이 아닌 문자가 나오면 현재 단어 길이를 1씩 증가시키고, 공백을 만나면 지금까지 계산한 단어 길이를 임시 변수에 저장합니다.
  • 임시 변수에 저장된 길이 값들을 max() 함수에 전달하여 가장 큰 값을 반환받습니다.
  • max() 함수가 반환한 최대 길이를 화면에 출력합니다.

알고리즘

Start
Step 1-> 문장에서 가장 긴 단어의 길이를 계산하는 함수 선언
    int word_length(string str)
        set int len = str.length()
        set int temp = 0
        set int newlen = 0
        Loop For int i = 0 and i < len and i++
            IF (str[i] != ' ')
                Increment newlen++
            End
            Else
                Set temp = max(temp, newlen)
                Set newlen = 0
            End
        return max(temp, newlen)
Step 2-> main() 함수에서
    declare string str = "tutorials point is the best learning platform"
    call word_length(str)
Stop

C++ 구현 코드

#include <iostream>
using namespace std;
// 가장 긴 단어를 찾는 함수
int word_length(string str) {
    int len = str.length();
    int temp = 0;
    int newlen = 0;
    for (int i = 0; i < len; i++) {
        if (str[i] != ' ')
            newlen++;
        else {
            temp = max(temp, newlen);
            newlen = 0;
        }
    }
    return max(temp, newlen);
}
int main() {
    string str = "tutorials point is the best learning platform";
    cout << "maximum length of a word is : " << word_length(str);
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

maximum length of a word is : 9

코드 설명

위 프로그램은 문자열을 처음부터 끝까지 한 글자씩 검사합니다. 공백이 아닌 문자를 만나면 newlen 변수를 1씩 증가시켜 현재 단어의 길이를 셉니다. 공백을 만나면 하나의 단어가 끝난 것이므로, temp 변수에 저장된 기존 최대값과 현재 단어 길이를 비교하여 더 큰 값을 유지하고 newlen을 0으로 초기화합니다.

반복문이 종료된 후에는 마지막 단어의 길이도 고려해야 하므로, 최종적으로 max(temp, newlen)을 반환합니다. 위 예제에서 가장 긴 단어는 "tutorials"와 "platform"으로 길이가 9이므로 출력값은 9가 됩니다.

이 알고리즘의 시간 복잡도는 O(n)으로, n은 문자열의 전체 길이입니다. 따라서 문장 길이에 비례하는 선형 시간 안에 효율적으로 처리됩니다.