원하는 문자열 찾기

Subin·2024년 8월 19일

Algorithm

목록 보기
21/69

[내 풀이]

#include <string>
#include <vector>

using namespace std;

int solution(string myString, string pat) {

    for (int i=0; i<myString.size(); i++)
    {
        myString[i] = tolower(myString[i]);
    }
    for (int i=0; i<pat.size(); i++)
    {
        pat[i] = tolower(pat[i]);
    }

    if(myString.length() < pat.length())
        return 0;
    else
    {
        for(int i=0; i<myString.length()-pat.length()+1; i++)
        {
            if(pat == myString.substr(i, pat.length()))
                return 1;
        }
    }

    return 0;
}

[다른 사람 풀이]

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int solution(string myString, string pat) {
    transform(myString.begin(),myString.end(),myString.begin(),::toupper);
    transform(pat.begin(),pat.end(),pat.begin(),::toupper);

    return myString.find(pat) != string::npos;
}

transform(first, end, d_first, op)

first부터 end까지 범위 내에서, d_first부터의 값을 op함수를 적용한 값으로 변경

  • transform(pat.begin(),pat.end(),pat.begin(),::toupper);

이는 pat의 처음부터 끝까지 범위내에서, pat의 처음 값부터 범위 내 값을 전부 upper로 변경한다는 의미

find()

특정 문자열을 찾을 때 유용

  • 찾지 못했을 경우, string::npos 반환

algorithm의 find함수와 string의 find함수의 차이는 다음 블로그 참고
https://8156217.tistory.com/21

profile
성장하며 꿈꾸는 삶을 살아가고 있는 대학생입니다😊

0개의 댓글