📜  按排序顺序重新排列字符串,后跟整数和

📅  最后修改于: 2022-05-13 01:57:08.290000             🧑  作者: Mango

按排序顺序重新排列字符串,后跟整数和

给定一个包含大写字母和整数数字(从 0 到 9)的字符串,任务是按顺序打印字母,然后是数字总和。

例子:

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++
// C++ program for above implementation
#include
using namespace std;
const int MAX_CHAR = 26;
 
// Function to return string in lexicographic
// order followed by integers sum
string 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 program
int main()
{
    string str = "ACCBA10D2EW30";
    cout << arrangeString(str);
    return 0;
}


Java
// 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
# Python3 program for above implementation
MAX_CHAR = 26
 
# Function to return string in lexicographic
# order followed by integers sum
def 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 code
if __name__ == "__main__":
    string = "ACCBA10D2EW30"
    print(arrangeString(string))
 
# This code is contributed by
# sanjeev2552


C#
// C# program for above implementation
using 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
= '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
?>


Javascript


输出:

AABCCDEW6