본문 바로가기
4.2 프로그래머스 & 코테문제/Java 풀이

[Java/프로그래머스 LV.0] 코딩 기초 트레이닝/특정 문자열로 끝나는 가장 긴 부분 문자열 찾기

by Dohi._. 2024. 7. 23.
728x90

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

 

 

문제설명

문자열 myString과 pat가 주어집니다. myString의 부분 문자열중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 5 ≤ myString ≤ 20
  • 1 ≤ pat ≤ 5
    • pat은 반드시 myString의 부분 문자열로 주어집니다.
  • myString과 pat에 등장하는 알파벳은 대문자와 소문자를 구분합니다.

풀이

이문제는 문자열을 뒤에서 부터 해당 문자열을 찾아서 인덱스를 리턴후 문자열을 자르기하면 되는 문제입니다!

 

1. 단순구현

class Solution {
    public String solution(String myString, String pat) {
        int len = pat.length()-1;
        String answer="";
        for(int i=myString.length()-1;i>=0;i--){
            if(myString.charAt(i)==pat.charAt(len)){
                len--;
            }else{
                len = pat.length()-1;
            }
      
            if(len ==-1){
                answer = myString.substring(0, i+pat.length());
                break;
            }
        }
        
        return answer;
    }
}

 

2. 마지막 인덱스 찾아서 반환하는 메소드 사용(단순구현한 내용을 메소드대체)

class Solution {
    public String solution(String myString, String pat) {
        int len = myString.lastIndexOf(pat);
        String answer=myString.substring(0,len+pat.length());
        
        return answer;
    }
}

 

들어간 메소드 정리

String.substring(int a,int b) String의 index a에서부터 index b의이전(a~b-1)까지 문자열 반환

String.substring(int a) : String의 index a에서부터 끝까지 문자열 반환

 

String.lastIndexOf(String str) :str을 String의 뒤에서부터 탐색하여 맨처음으로 나오는 index를 리턴.

728x90

댓글