Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ 정렬된 순서로 문자열을 재배열한 다음 정수 합계가 뒤따릅니다.

<시간/>

알파벳 문자열을 정렬된 순서로 재배열하고 문자열에 있는 모든 정수를 더하는 문제에 대해 토론하십시오. 예를 들면

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 등과 같은 다른 프로그래밍 언어로 작성할 수 있습니다. 이 튜토리얼이 도움이 되기를 바랍니다.