1945년. 변환 후 문자열의 자릿수 합계
난이도: 쉬움
주제: 문자열, 시뮬레이션
영문 소문자와 정수 k로 구성된 문자열 s가 주어졌습니다.
먼저 각 문자를 알파벳 위치로 바꿔서 s를 정수로 변환합니다(예: 'a'를 1로, 'b'를 2로, ..., 'z'를 26). 그런 다음 정수를 자릿수의 합으로 바꿔서 변환하세요. k 변환 작업을 총 회 반복합니다.
예를 들어, s = "zbax"이고 k = 2인 경우 다음 연산을 통해 결과 정수는 8이 됩니다.
-
변환: "zbax" ➝ "(26)(2)(1)(24)" ➝ "262124" ➝ 262124
-
변환 #1: 262124 ➝ 2 + 6 + 2 + 1 + 2 + 4 ➝ 17
-
변환 #2: 17 ➝ 1 + 7 ➝ 8
위에 설명된 작업을 수행한 후 결과 정수를 반환합니다.
예 1:
-
입력: s = "iiii", k = 1
-
출력: 36
-
설명: 작업은 다음과 같습니다.
- 변환: "iiii" ➝ "(9)(9)(9)(9)" ➝ "9999" ➝ 9999
- 변환 #1: 9999 ➝ 9 + 9 + 9 + 9 ➝ 36
- 따라서 결과 정수는 36입니다.
예 2:
-
입력: s = "leetcode", k = 2
-
출력: 6
-
설명: 작업은 다음과 같습니다.
- 변환: "leetcode" ➝ "(12)(5)(5)(20)(3)(15)(4)(5)" ➝ "12552031545" ➝ 12552031545
- 변환 #1: 12552031545 ➝ 1 + 2 + 5 + 5 + 2 + 0 + 3 + 1 + 5 + 4 + 5 ➝ 33
- 변환 #2: 33 ➝ 3 + 3 ➝ 6
- 따라서 결과 정수는 6입니다.
예 3:
-
입력: s = "zbax", k = 2
-
출력: 8
제약조건:
- 1 <= s.length <= 100
- 1 <= k <= 10
-
s는 영문 소문자로 구성됩니다.
힌트:
- 먼저 첫 번째 변환 후 값은 최대 100 * 10이 되며 그다지 많지 않습니다
- 첫 번째 변환 후 무차별 대입으로 나머지 변환을 수행할 수 있습니다
해결책:
해결책은 두 가지 주요 단계로 나눌 수 있습니다.
-
문자열 s를 정수로 변환:
- 문자열의 각 문자는 알파벳의 해당 위치로 대체됩니다(예: 'a' -> 1, 'b' -> 2, ..., 'z' -> 26).
- 이 모든 숫자를 연결하여 큰 정수를 만듭니다.
-
숫자를 k번 더하여 정수 변환:
- 각 변환에 대해 현재 숫자의 모든 자릿수를 더합니다.
- 이 변환 과정을 k번 반복합니다.
이 솔루션을 PHP로 구현해 보겠습니다: 1945. 변환 후 문자열의 자릿수 합계
설명:
-
문자열 변환:
- 문자열 s의 각 문자를 반복하고 ord($s[$i]) - ord('a') + 1을 사용하여 해당 알파벳 위치를 계산합니다.
- 이러한 값은 연결되어 숫자를 나타내는 큰 문자열 numStr을 형성합니다.
-
숫자 변형:
- k번 반복하여 매번 현재 numStr의 숫자를 합산합니다.
- 이 합산 연산의 결과는 추가 변환이 가능하도록 numStr에 문자열로 다시 저장됩니다.
- k개의 변환 후에 최종 정수 값을 반환합니다.
테스트 케이스:
-
k = 1인 "iiii"는 "9999"로 변환되고 합은 36이 되며, k=1이므로 최종 결과는 36입니다.
-
k = 2인 "leetcode"는 "12552031545"로 변환되고 첫 번째 변환에서는 합이 33이 되고 두 번째 변환에서는 6이 되어 6이 됩니다.
-
k = 2인 "zbax"는 "262124"로 변환되고 합은 첫 번째 변환에서 17이 되고 두 번째 변환에서는 8이 되어 8이 됩니다.
이 솔루션은 제약 조건을 고려할 때 효율적이며 제공된 제한 내에서 잘 작동합니다.
연락처 링크
이 시리즈가 도움이 되었다면 GitHub에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다!
이렇게 더 유용한 콘텐츠를 원하시면 저를 팔로우해주세요.
위 내용은 변환 후 문자열의 자릿수 합계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!