문자열 바꿔서 찾기
https://school.programmers.co.kr/learn/courses/30/lessons/181864?language=java
문제 풀이
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 29 30 31 32 33 34 35 36 37
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String myString = sc.next(); String pat = sc.next(); int result = solution(myString, pat); System.out.println(result); } public static int solution(String myString, String pat) { StringBuilder convertedString = new StringBuilder(myString.length()); // A를 B로, B를 A로 바꾸기 for (char ch : myString.toCharArray()) { if (ch == 'A') { convertedString.append('B'); } else if (ch == 'B') { convertedString.append('A'); } } // StringBuilder를 String으로 변환 String convertedStringStr = convertedString.toString(); // pat이 있는지 확인 for (int i = 0; i <= convertedStringStr.length() - pat.length(); i++) { if (convertedStringStr.substring(i, i + pat.length()).equals(pat)) { // 변환된 문자열에서 pat과 길이가 같은 부분을 선택 return 1; } } return 0; } }
- 문자열
convertedStringStr
의 길이에서pat
의 길이를 뺀 값은, 검사할 수 있는 부분 문자열의 마지막 인덱스를 나타낸다. 만약에 문자열이 “ABBAA”이고,pat
이 “AABB”라면,convertedStringStr
의 마지막 4개 문자는 “AABB”가 될 것이다.pat
을 찾기 위해서는convertedStringStr.length() - pat.length()
까지 길이가pat
과 같은 부분 문자열을 검사해야 한다. equals(pat)
은pat
과 해당 부분 문자열이 정확히 일치하는지를 비교하는 메서드이다. 즉, 변환된 문자열에서pat
과 일치하는 부분이 있는지를 확인한다.
- 문자열
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.