하위 문자열의 반복이 하위 문자열 다음에 하위 문자열 개수로 표시되는 인코딩된 문자열이 하나 있다고 가정합니다. 예를 들어 문자열이 "pq2rs2"이고 k=5이면 출력은 'r'이 되는데, 이는 복호화된 문자열이 "pqpqrsrs"이고 5번째 문자가 'r'이기 때문입니다. 암호화된 하위 문자열의 빈도는 한 자리 이상일 수 있음을 명심해야 합니다.
따라서 입력이 string ="pq4r2ts3" 및 k =11과 같으면 문자열이 pqpqpqpqrrtststs이므로 출력은 i가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
인코딩된 :=빈 문자열
-
발생 :=0, 나는 :=0
-
동안 나는
-
temp :=빈 문자열
-
발생 :=0
-
-
i
-
temp :=temp + str[i]
-
나는 :=나는 + 1
-
-
i
-
발생 :=발생 * 10 + (str[i])의 ASCII - ('0')의 ASCII
-
나는 :=나는 + 1
-
-
범위 1에서 발생 + 1까지의 j에 대해 1씩 증가, 수행
-
인코딩된 :=인코딩된 + 임시
-
-
발생이 0과 같으면
-
인코딩된 :=인코딩된 + 임시
-
-
인코딩된 반환[k - 1]
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def find_kth_char(str, k):
encoded = ""
occurrence = 0
i = 0
while i < len(str):
temp = ""
occurrence = 0
while (i < len(str) and ord(str[i]) >= ord('a') and ord(str[i]) <= ord('z')):
temp += str[i]
i += 1
while (i < len(str) and ord(str[i]) >= ord('1') and ord(str[i]) <= ord('9')):
occurrence = occurrence * 10 + ord(str[i]) - ord('0')
i += 1
for j in range(1, occurrence + 1, 1):
encoded += temp
if occurrence == 0:
encoded += temp
return encoded[k - 1]
str = "pq4r2ts3"
k = 11
print(find_kth_char(str, k)) 입력
"pq4r2ts3", 11
출력
t