Coding Test/Java Coding Test
[프로그래머스 / 자바] - 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기
nam_ji
2024. 6. 26. 12:52
특정 문자열로 끝나는 가장 긴 부분 문자열 찾기
문제
- 문자열 my_string과 pat이 매개변수로 주어집니다.
- my_string의 부분 문자열 중 pat로 끝나는
- 가장 기 부분 문자열을 출력하는 문제입니다.
-
myString pat result "AbCdEFG" "dE" "AbCdE "AAAAaaaa" "a" "AAAAaaaa"
테스트 (인텔리제이)
- pat이 포함된 가장 긴 문자열을 출력해야 하기 때문에 문자열을 자르기 위한 substring 메서드와 해당 인덱스 번호를 확인해야 하기 때문에 indexOf 메서드를 생각했습니다.
- 우선 my_string에 substring 메서드를 사용합니다.
- substring의 시작을 0으로 하고 마지막은 my_String의 문자열에서 pat의 문자열과 일치하면서 가장 긴 문자열로 출력해야 하기 때문에 뒤에서 pat과 일치하는 인덱스 번호를 찾아야 조건을 만족할 수 있을거라 생각하여 lastIndexOf 메서드를 사용했습니다.
- 여기서 + pat의 길이를 더해준 이유는 substring은 마지막 인덱스 번호 전까지 문자열을 잘라 출력하기 때문에 pat의 길이만큼 추가해서 잘라줘야 조건을 만족시킬 수 있습니다.
- 두 번째 방법으로 StringBuilder를 사용한 방법입니다.
- StringBuilder는 새로운 문자를 추가할 때 append 메서드를 사용합니다.
- append 안에는 가공할 문자열을 첫 번째로 작성하고 2번째는 시작 위치 세번째는 마지막 위치를 작성해주면 됩니다.
public class 특정_문자열로_끝나는_가장_긴_부분_문자열_찾기 {
public static void main(String[] args) {
/*
문자열 my_string과 pat이 매개변수로 주어집니다.
my_string의 부분 문자열 중 pat로 끝나는
가장 기 부분 문자열을 출력하는 문제입니다.
입출력 예
myString pat result
"AbCdEFG" "dE" "AbCdE"
"AAAAaaaa" "a" "AAAAaaaa"
*/
String my_string = "AAAAaaaa";
String pat = "a";
String answer = "";
answer = my_string.substring(0, my_string.lastIndexOf(pat) + pat.length());
System.out.println(answer);
// String my_string = "AbCdEFG";
// String pat = "dE";
// StringBuilder answer = new StringBuilder();
//
// answer.append(my_string, 0, my_string.lastIndexOf(pat) + pat.length());
//
// System.out.println(answer);
}
}
프로그래머스 코드
class Solution {
public String solution(String myString, String pat) {
String answer = myString.substring(0, myString.lastIndexOf(pat) + pat.length());
return answer;
}
}
// class Solution {
// public StringBuilder solution(String myString, String pat) {
// StringBuilder answer = new StringBuilder();
// return answer.append(myString, 0, myString.lastIndexOf(pat) + pat.length());
// }
// }