반응형
https://leetcode.com/problems/make-string-a-subsequence-using-cyclic-increments
two pointer로 해결한 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
str1의 index i와 str2의 index j를 선언 후 각각 0으로 초기화합니다.
📔 풀이과정
* 한번에 str1의 여러 index를 골라 다음 알파벳으로 바꿀 수 있습니다. 따라서 i, j를 옮기면서 만들 수 있는지 여부를 비교합니다.
i가 str1의 길이 미만이면서 j도 str2의 길이 미만인 동안 while loop를 수행하며 다음을 진행합니다.
1. 현재 단어 c1, c2는 str1[i], str2[j]이므로 지역변수로 선언 후 각각 저장해줍니다.
2. c1이 c2와 같거나 c1의 다음 알파벳이 c2라면 연산에 포함할 수 있으므로 i와 j를 동시에 1씩 증가시킵니다. 아닌 경우는 확인할 필요 없으므로 i만 증가시킵니다.
📔 정답 출력 | 반환
j번째 알파벳을 모두 만들 수 있는지만 검사하면 되기 때문에 str2의 길이만큼 증가했는지 여부만 반환합니다.
📕 Code
📔 Python3
class Solution:
def canMakeSubsequence(self, str1: str, str2: str) -> bool:
i, j = 0, 0
while i < len(str1) and j < len(str2):
c1, c2 = str1[i], str2[j]
if c1 == c2 or chr((ord(c1) + 1 - 97) % 26 + 97) == c2:
i+=1
j+=1
continue
i+=1
return j == len(str2)
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.