하위 문자열의 반복이 하위 문자열 다음에 하위 문자열 개수로 표시되는 인코딩된 문자열이 하나 있다고 가정합니다. 예를 들어 문자열이 "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