Leetcode Java Get Equal Substrings Within Budget
업데이트:
문제
코드
class Solution {
public int equalSubstring(String s, String t, int maxCost) {
char[] sCharArray = s.toCharArray();
char[] tCharArray = t.toCharArray();
int i = 0;
int j = 0;
while (j < s.length()) {
maxCost -= Math.abs(sCharArray[j] - tCharArray[j++]);
if (maxCost < 0) {
maxCost += Math.abs(sCharArray[i] - tCharArray[i++]);
}
}
return j - i;
}
}
결과
설명
-
동일한 길이의 문자열 s와 t를 이용하여 maxCost 이하의 비용으로 t의 부분 문자열의 문자를 변경하여 s의 부분 문자열이 동일하게 만들 경우, 가능한 최대 길이의 부분 문자열의 길이를 구하는 문제이다.
- 문제 풀이에 필요한 변수를 정의한다.
- sCharArray와 tCharArray는 s와 t를 문자 배열로 변환한 변수이다.
- i와 j는 문자열의 시작 위치와 종료 위치를 저장할 변수로, 둘 다 0으로 초기화한다.
- j가 s의 길이 미만일 때 까지 아래를 반복한다.
- maxCoust에 $sCharArray[j] - tCharArray[j]$의 절댓값을 빼주고 j를 증가시킨다.
- maxCoust가 0보다 낮은 경우 시작 위치를 증가시키기 위해서, maxCoust에 $sCharArray[i] - tCharArray[i]$의 절댓값을 더해주고 i를 증가시킨다.
- 반복이 완료되면 문자열의 길이인 $j - i$를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기