포스트

원하는 문자열 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/181878

문제

  • 문제 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Solution {
    public int solution(String myString, String pat) {
        myString = myString.toLowerCase(); // 대소문자 구분하지 않으므로 모두 소문자로 변환
        pat = pat.toLowerCase();

        int n = myString.length();
        int m = pat.length();

        // myString에서 pat의 길이만큼씩 잘라서 비교
        for (int i = 0; i <= n - m; i++) {
            String subString = myString.substring(i, i + m);
            if (subString.equals(pat)) { // 부분 문자열이 pat과 일치하는지 확인
                return 1; // 일치하면 1 반환
            }
        }
        return 0; // 일치하는 부분 문자열을 찾지 못했을 때 0 반환
    }

    public static void main(String[] args) {
        Solution sol = new Solution();
        String myString1 = "AbCdEfG";
        String pat1 = "aBc";
        String myString2 = "aaAA";
        String pat2 = "aaaaa";
        System.out.println(sol.solution(myString1, pat1)); // 출력: 1
        System.out.println(sol.solution(myString2, pat2)); // 출력: 0
    }
}
1
2
3
4
5
6
7
8
class Solution {
    public int solution(String myString, String pat) {
        myString = myString.toLowerCase(); // 문자열을 소문자로 변환
        pat = pat.toLowerCase(); // 패턴도 소문자로 변환

        return myString.contains(pat) ? 1 : 0; // 소문자로 변환된 문자열에서 패턴이 존재하는지 확인하여 결과 반환
    }
}


  • substring() 함수
    • 문자열에서 지정된 시작 위치부터 끝 위치까지의 문자열을 추출하는 데 사용된다.

      1
      2
      3
      
        String str = "Hello, world!";
        String sub1 = str.substring(7); // "world!"
        String sub2 = str.substring(0, 5); // "Hello"
      
      • substring(7)은 인덱스 7부터 문자열의 끝까지를 반환한다. 따라서 “world!”가 된다.
      • substring(0, 5)은 인덱스 0부터 4까지의 문자열을 반환한다. 인덱스 5는 포함되지 않으므로 “Hello”가 된다.
      • 즉, substring() 메서드의 첫 번째 매개변수는 시작 인덱스를 나타내고, 두 번째 매개변수는 끝 인덱스(포함되지 않음)를 나타낸다. 두 번째 매개변수를 생략하면 시작 인덱스부터 문자열의 끝까지를 추출한다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.