본문 바로가기

Algorithm/Programers - Java

[프로그래머스(Java)] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 / lastIndexOf()

 

Level. 0

 

문제

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

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

 

풀이

class Solution {
    public String solution(String myString, String pat) {
        String answer = "";
        int index = 0, size = pat.length();
        char last = pat.charAt(size-1);
        
        for(index=myString.length(); index>0 ;index--){
            if(myString.charAt(index-1)==last){
                if(myString.substring(index-size, index).equals(pat))
                    break;
            }
        }
        
        return myString.substring(0, index);
    }
}

 

 

 


다른 풀이

class Solution {
    public String solution(String myString, String pat) {
        String answer = "";

        int idx = myString.lastIndexOf(pat);

        answer = myString.substring(0, idx) + pat;

        return answer;
    }
}

 

 

문자열 위치 찾기

 

1. indexOf()

public int indexOf(String str)
public int indexOf(int char)
public int indexOf(String str, int fromIndex)
public int indexOf(int char, int fromIndex)
  • 파라미터로 받은 문자열을 원본 문자열 앞에서부터 탐색하여 처음 발견되는 index를 반환한다.
  • 두 번째 파라미터가 fromIndex가 입력되면, fromIndex부터 탐색을 시작한다. 
  • 문자 혹은 문자열을 찾지 못할 경우 -1을 반환한다. 

2. lastIndexOf()

public int lastIndexOf(String str)
public int lastIndexOf(int char)
public int lastIndexOf(String str, int fromIndex)
public int lastIndexOf(int char, int fromIndex)
  • 파라미터로 받은 문자열을 원본 문자열 뒤에서부터 탐색하여 처음 발견되는 index를 반환한다. 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr