두 개의 문자열 s와 t가 있다고 가정합니다. 우리는 t를 형성하고 싶지만, 키보드에 몇몇 문자가 붙어서 1번 이상 쓸 수 있는 문제가 있습니다. 입력한 s가 t를 쓰기 위한 것인지 아닌지 확인해야 합니다.
따라서 입력이 s ="apppplee" t ="apple"과 같으면 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- i :=0, j :=0
- s_len :=s의 크기
- t_len :=t의 크기
- t_last :=빈 문자열
- j
- i가 s_len과 같으면
- 거짓을 반환
- s[i]가 t[j]와 같으면
- t_last :=t[j]
- 나는 :=나는 + 1
- j :=j + 1
- 그렇지 않으면 s[i]가 t_last와 같을 때
- 나는 :=나는 + 1
- 그렇지 않으면
- 거짓을 반환
- i가 s_len과 같으면
- 참 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(s, t): i = j = 0 s_len = len(s) t_len = len(t) t_last = "" while j < t_len: if i == s_len: return False if s[i] == t[j]: t_last = t[j] i += 1 j += 1 elif s[i] == t_last: i += 1 else: return False if i < s_len: return all(char == t_last for char in s[i:]) else: return True s = "appppleee" t = "apple" print(solve(s, t))
입력
"appppleee", "apple"
출력
True