Rearrange a string in sorted order followed by the integer sum

23 Jun, 2022
Given a string containing uppercase alphabets and integer digits (from 0 to 9), the task is to print the alphabets in the order followed by the sum of digits. 
Examples:  
Input : AC2BEW3
Output : ABCEW5
Alphabets in the lexicographic order 
followed by the sum of integers(2 and 3).
 
 
Implementation:
1- Start traversing the given string.
   a) If an alphabet comes increment its
      occurrence count into a hash_table.
   b) If an integer comes then store it 
      separately by summing up everytime.
2- Using hash_table append all the 
   characters first into a string and 
   then at the end, append the integers 
   sum.
3- Return the resultant string.
 
C++
Java
Python3
C#
PHP
Javascript
// C++ program for above implementation#include<bits/stdc++.h>using namespace std;const int MAX_CHAR = 26; // Function to return string in lexicographic// order followed by integers sumstring arrangeString(string str){    int char_count[MAX_CHAR] = {0};    int sum = 0;     // Traverse the string    for (int i = 0; i < str.length(); i++)    {        // Count occurrence of uppercase alphabets        if (str[i]>='A' && str[i] <='Z')            char_count[str[i]-'A']++;         //Store sum of integers        else            sum = sum + (str[i]-'0');    }     string res = "";     // Traverse for all characters A to Z    for (int i = 0; i < MAX_CHAR; i++)    {        char ch = (char)('A'+i);         // Append the current character        // in the string no. of times it        //  occurs in the given string        while (char_count[i]--)            res = res + ch;    }     // Append the sum of integers    if (sum > 0)        res = res + to_string(sum);     // return resultant string    return res;} // Driver programint main(){    string str = "ACCBA10D2EW30";    cout << arrangeString(str);    return 0;}
// Java program for above implementation class Test{    static final int MAX_CHAR = 26;         // Method to return string in lexicographic    // order followed by integers sum    static String arrangeString(String str)    {        int char_count[] = new int[MAX_CHAR];        int sum = 0;              // Traverse the string        for (int i = 0; i < str.length(); i++)        {            // Count occurrence of uppercase alphabets            if (Character.isUpperCase(str.charAt(i)))                char_count[str.charAt(i)-'A']++;                  //Store sum of integers            else                sum = sum + (str.charAt(i)-'0');                     }              String res = "";              // Traverse for all characters A to Z        for (int i = 0; i < MAX_CHAR; i++)        {            char ch = (char)('A'+i);                  // Append the current character            // in the string no. of times it            //  occurs in the given string            while (char_count[i]-- != 0)                res = res + ch;        }              // Append the sum of integers        if (sum > 0)            res = res + sum;              // return resultant string        return res;    }         // Driver method    public static void main(String args[])    {        String str = "ACCBA10D2EW30";        System.out.println(arrangeString(str));    }}
# Python3 program for above implementationMAX_CHAR = 26 # Function to return string in lexicographic# order followed by integers sumdef arrangeString(string):    char_count = [0] * MAX_CHAR    s = 0     # Traverse the string    for i in range(len(string)):         # Count occurrence of uppercase alphabets        if string[i] >= "A" and string[i] <= "Z":            char_count[ord(string[i]) - ord("A")] += 1         # Store sum of integers        else:            s += ord(string[i]) - ord("0")     res = ""     # Traverse for all characters A to Z    for i in range(MAX_CHAR):        ch = chr(ord("A") + i)         # Append the current character        # in the string no. of times it        # occurs in the given string        while char_count[i]:            res += ch            char_count[i] -= 1     # Append the sum of integers    if s > 0:        res += str(s)     # return resultant string    return res # Driver codeif __name__ == "__main__":    string = "ACCBA10D2EW30"    print(arrangeString(string)) # This code is contributed by# sanjeev2552
// C# program for above implementationusing System; class GFG {         static int MAX_CHAR = 26;         // Method to return string in lexicographic    // order followed by integers sum    static String arrangeString(string str)    {        int []char_count = new int[MAX_CHAR];        int sum = 0;             // Traverse the string        for (int i = 0; i < str.Length; i++)        {                         // Count occurrence of uppercase            // alphabets            if (char.IsUpper(str[i]))                char_count[str[i]-'A']++;                 //Store sum of integers            else                sum = sum + (str[i]-'0');                     }             string res = "";             // Traverse for all characters A to Z        for (int i = 0; i < MAX_CHAR; i++)        {            char ch = (char)('A' + i);                 // Append the current character            // in the string no. of times it            // occurs in the given string            while (char_count[i]-- != 0)                res = res + ch;        }             // Append the sum of integers        if (sum > 0)            res = res + sum;             // return resultant string        return res;    }         // Driver method    public static void Main()    {        string str = "ACCBA10D2EW30";        Console.Write(arrangeString(str));    }} // This code is contributed by nitin mittal.
<?php// PHP program for above implementation $MAX_CHAR = 26; // Function to return string in lexicographic// order followed by integers sumfunction arrangeString($str){    global $MAX_CHAR;    $char_count = array_fill(0, $MAX_CHAR, NULL);    $sum = 0;     // Traverse the string    for ($i = 0; $i < strlen($str); $i++)    {        // Count occurrence of uppercase alphabets        if ($str[$i] >= 'A' && $str[$i] <= 'Z')            $char_count[ord($str[$i]) -                            ord('A')]++;         // Store sum of integers        else            $sum = $sum + (ord($str[$i]) -                           ord('0'));    }     $res = "";     // Traverse for all characters A to Z    for ($i = 0; $i < $MAX_CHAR; $i++)    {        $ch = chr(ord('A') + $i);         // Append the current character        // in the string no. of times it        // occurs in the given string        while ($char_count[$i]--)            $res = $res . $ch;    }     // Append the sum of integers    if ($sum > 0)        $res = $res . strval($sum);     // return resultant string    return $res;} // Driver Code$str = "ACCBA10D2EW30";echo arrangeString($str); // This code is contributed by ita_c?>
<script> // Javascript program for above implementation         let MAX_CHAR = 26;         // Method to return string in lexicographic    // order followed by integers sum    function arrangeString(str)    {        let char_count = new Array(MAX_CHAR);        for(let i=0;i<MAX_CHAR;i++)        {            char_count[i]=0;        }        let sum = 0;                // Traverse the string        for (let i = 0; i < str.length; i++)        {            // Count occurrence of uppercase alphabets            if (str[i] >= "A" && str[i] <= "Z")                char_count[str[i].charCodeAt(0)-                'A'.charCodeAt(0)]++;                    //Store sum of integers            else                sum = sum + (str[i].charCodeAt(0)-                '0'.charCodeAt(0));                       }                let res = "";                // Traverse for all characters A to Z        for (let i = 0; i < MAX_CHAR; i++)        {            let ch =            String.fromCharCode('A'.charCodeAt(0)+i);                    // Append the current character            // in the string no. of times it            //  occurs in the given string            while (char_count[i]-- != 0)                res = res + ch;        }                // Append the sum of integers        if (sum > 0)            res = res + sum;                // return resultant string        return res;    }          // Driver method    let str = "ACCBA10D2EW30";    document.write(arrangeString(str));         // This code is contributed by avanitrachhadiya2155     </script>
Output:  
AABCCDEW6
Time Complexity: O(n)Auxiliary Space: O(n) Reference : https://www.careercup.com/question?id=13382661This article is contributed by Aarti_Rathi and Sahil Chhabra. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
nitin mittal
ukasp
sanjeev2552
nidhi_biet
avanitrachhadiya2155
sachinvinod1904
Facebook
Strings
Facebook
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python program to check if a string is palindrome or not
Longest Palindromic Substring | Set 1
What is Data Structure: Types, Classifications and Applications
Top 50 String Coding Problems for Interviews
Length of the longest substring without repeating characters
Check whether two strings are anagram of each other
Convert string to char array in C++
Reverse words in a given string
Print all the duplicates in the input string
Reverse string in Python (6 different ways)