소문자 알파벳 문자열 텍스트가 있고 key라는 다른 문자열이 있다고 가정합니다. text[i]의 모든 문자가 오프셋 키[i]를 사용하여 오른쪽으로 이동되는 새 문자열을 찾아야 합니다. 여기에서 알파벳에서 key[i]의 위치가 나타내는 오프셋입니다(A=0, B=1 등). 문자가 넘칠 경우 다른 쪽을 감싸게 됩니다.
따라서 입력이 text ="code", key ="team"인 경우 출력은 "vsdq"가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- cip :=새 목록
- start :='a'의 ASCII
- 텍스트의 각 l과 키의 k에 대해 다음을 수행합니다.
- shift :=(k의 ASCII) - 시작
- pos :=시작 +((l의 ASCII) - 시작 + 시프트) 모드 26
- cip 끝에 pos 문자 삽입
- cip 및 return 문자열 결합
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class Solution: def solve(self, text, key): cip = [] start = ord('a') for l, k in zip(text, key): shift = ord(k) - start pos = start + (ord(l) - start + shift) % 26 cip.append(chr(pos)) return ''.join([l for l in cip]) ob = Solution() text = "code" key = "team" print(ob.solve(text, key))
입력
"code", "team"
출력
vsdq