최대 개수는 가능한 최대 개수입니다. 여기서는 정수 N과 정수 M의 문자열이 주어집니다. 우리의 임무는 정수 M의 숫자를 사용하여 숫자 N을 형성하고 최대 개수를 반환하는 것입니다. 동시에 2와 5는 같은 숫자, 6과 9는 같은 숫자라고 생각할 수 있습니다.
설명 − 5와 2는 같고 6과 9는 같으므로 '2'가 2개, '9'가 2개 있습니다. 따라서 숫자 N(29)을 형성하기 위해 문자열 M(2596783)의 숫자를 사용하는 최대 개수는 2입니다.
아래 방법을 단계별로 논의해 보겠습니다.
먼저, 주어진 문자열 'M'과 숫자 'N'을 매개 변수로 사용하고 필요한 정수 'maxCount'를 반환 값으로 반환하는 'maxCountOfN'이라는 함수를 만듭니다.
이 함수에서는 문자열 'M'에 각 숫자의 빈도를 저장하는 해시 맵 'mp'를 생성합니다.
문자열 'M'의 크기를 저장하기 위해 변수 'len'을 정의합니다.
인덱스 'i = 0'부터 시작하여 'len'보다 작거나 같을 때까지 문자열 'M'을 탐색하고 이 루프에서 다음 작업을 수행합니다.
얻어진 숫자가 '2'이면 '5'로 변환합니다.
'6'이라는 숫자를 얻으면 '9'로 변환합니다.
'mp' 맵에 있는 각 숫자의 빈도를 문자-정수 쌍으로 셉니다.
숫자 N의 빈도를 저장하기 위해 또 다른 해시 맵 'mpN'을 만듭니다
while 루프를 사용하여 N이 0보다 커질 때까지 숫자 'N'을 반복하고 이 루프에서 다음 작업을 수행합니다. -
숫자의 마지막 요소를 저장하는 정수 'rem'을 생성하세요
2인지 확인하고 5로 변환
rem이 6인지 확인하고 9로 변환
'mpN' 맵에 있는 각 숫자의 빈도를 문자-정수 쌍으로 계산합니다. 이는 'mpN[rem + '0']'과 같이 정수를 맵의 문자로 저장하는 것입니다.
N을 N%10으로 줄여 숫자의 마지막 숫자를 제거하세요
'INT_MAX'를 저장하는 변수 'maxCount'를 생성합니다.
마지막으로 'mpN' 맵을 반복하여 N의 최대 개수를 찾고 이 루프에서 다음을 수행합니다. -
변수 'key'에 자릿수 저장
문자열 맵에 키가 있는지 확인하세요. 키가 없으면 문자열 'M'의 숫자를 사용하여 숫자 'N'을 만들 수 없으며 '0'을 반환한다는 뜻입니다.
값을 저장하는 변수 'tempCount'에 변수를 만듭니다(문자열 M의 숫자 빈도를 N의 현재 숫자 빈도로 나눕니다).
maxCount에는 숫자 'N'의 모든 자릿수가 문자열 'M'에 나타나는 경우에만 숫자 'N'을 생성할 수 있기 때문에 tempCount와 maxCount의 최소값을 저장합니다.
최대 개수 반환
이 튜토리얼에서는 2와 5, 6과 9가 각각 동일하게 처리될 수 있도록 M의 숫자를 사용하여 N의 최대 개수를 찾는 프로그램을 구현했습니다. O(N+M)의 시간 복잡도와 O(N+M)의 공간 복잡도로 주파수를 저장합니다. 여기서 M은 문자열의 크기이고 N은 숫자의 크기입니다.
위 내용은 M의 숫자를 사용하면 최대 개수는 N이며, 여기서 2와 5, 6과 9는 서로 동일하다고 간주될 수 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!