Post

[Programmers] #181878 - 원하는 문자열 찾기 [Java][C++][Python]

대소문자를 구분하지 않고 한 문자열이 다른 문자열의 연속된 부분 문자열로 존재하는지 판별하는 문제.

[Programmers] #181878 - 원하는 문자열 찾기 [Java][C++][Python]

문제 링크


1. 아이디어

알파벳 대소문자를 구분하지 않으므로 myStringpat을 모두 소문자로 바꾼 뒤, patmyString의 연속된 부분 문자열로 존재하는지 판정한다. 존재하면 1, 그렇지 않으면 0을 return한다.


2. 복잡도

접근시간공간
풀이$O(N \times M)$$O(N + M)$

($N$ = myString의 길이, $M$ = pat의 길이)


3. 코드

풀이 [Java][C++][Python]

1
2
3
4
5
class Solution {
    public int solution(String myString, String pat) {
        return myString.toLowerCase().contains(pat.toLowerCase()) ? 1 : 0;
    }
}
1
2
3
4
5
6
7
8
9
#include <bits/stdc++.h>
using namespace std;

int solution(string myString, string pat) {
    for (char& c : myString) c = tolower(c);
    for (char& c : pat) c = tolower(c);

    return myString.find(pat) != -1;
}
1
2
def solution(myString, pat):
    return int(pat.lower() in myString.lower())

This post is licensed under CC BY 4.0 by the author.