알파벳 문자열을 정렬된 순서로 재배열하고 문자열에 있는 모든 정수를 더하는 문제에 대해 토론하십시오. 예를 들면
Input : str = “adv4fc3” Output : “ acdfv7” Explanation: all the letters have been sorted to “acdfv” followed by the sum of integers 4 and 3. Input: str = “ h2d7e3f ” Output: “ defh12” Explanation: all the letters have been sorted to “defh” followed by the sum of integers 2, 7, and 3.
해결책을 찾기 위한 접근 방식
이 문제에서 수행할 두 가지 작업이 있습니다. 하나는 문자열을 정렬하는 것이고 다른 하나는 정수 값을 추가하는 것입니다.
-
문자열 정렬은 문자열의 모든 문자의 개수를 유지한 다음 개수에 따라 모든 문자를 삽입하여 새 문자열을 구성하여 수행할 수 있습니다.
-
정수가 올 때마다 변수에 정수를 추가하여 정수를 더할 수 있습니다.
예시
위 접근 방식에 대한 C++ 코드
#include<bits/stdc++.h> using namespace std; const int MAX_CHAR = 26; int main(){ string str = "h2d7e3f"; int ch[26] = {0}; int count = 0; // traverse through all the characters of string. for (int i = 0; i < str.length(); i++){ // keeping count of occurance every character. if (str[i]>='a' && str[i] <='z') ch[str[i] - 97] = ch[str[i] - 97] + 1; // If an Integer encounters. else count = count + (str[i]-'0'); } string final = ""; // Making a sorted string with the help of ch array. for (int i = 0; i < 26; i++){ char a = (char)('a'+i); // insert the current character // to new string untill it count ends while (ch[i]-- != 0) final = final + a; } // and finally insert sum of all integers in the string. if (count>0) final = final + to_string(count); cout << "Rearranged string: " << final; return 0; }
출력
Rearranged string: defh12
위 코드 설명
-
배열 ch는 26개의 알파벳이 나오는 횟수를 유지해야 하기 때문에 크기가 26으로 초기화됩니다.
-
첫 번째 루프에서 우리는 문자열을 순회합니다. 모든 알파벳에 대해 해당 알파벳의 수를 증가시킵니다. 모든 정수에 대해 count 변수에 추가합니다.
-
두 번째 루프에서는 카운트에 따라 문자열에 문자를 추가하는 모든 카운트에서 새로운 정렬된 문자열을 형성합니다.
-
그리고 마침내 첫 번째 루프에서 계산한 정수의 합으로 문자열을 추가합니다.
결론
이 튜토리얼에서는 문자열을 정렬된 순서로 정렬하는 방법을 논의하고 해시 테이블 접근 방식에서 이를 기반으로 문제를 해결했습니다. 우리는 또한 이 문제에 대한 C++ 코드에 대해 논의했습니다. C, Java, Python 등과 같은 다른 프로그래밍 언어로 작성할 수 있습니다. 이 튜토리얼이 도움이 되기를 바랍니다.