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

คำอธิบายของโค้ดด้านบน

  • Array ch เริ่มต้นจากขนาด 26 เนื่องจากเราต้องนับจำนวนการเกิดขึ้นของตัวอักษร 26 ตัว

  • ในการวนรอบแรก เรากำลังข้ามผ่านสตริง สำหรับตัวอักษรทุกตัว เรากำลังเพิ่มจำนวนตัวอักษรนั้น สำหรับจำนวนเต็ม เราจะบวกมันเข้าไปในตัวแปรการนับ

  • ในลูปที่สอง เรากำลังสร้างสตริงที่จัดเรียงใหม่จากการนับทั้งหมดที่เราต่อท้ายอักขระในสตริงตามจำนวนของมัน

  • และในที่สุดเราก็ต่อท้ายสตริงด้วยผลรวมของจำนวนเต็มที่เรานับจากลูปแรก

บทสรุป

ในบทช่วยสอนนี้ เราได้พูดถึงวิธีการจัดเรียงสตริงในลำดับที่จัดเรียงและแก้ไขปัญหาโดยอิงจากแนวทางตารางแฮช เรายังกล่าวถึงรหัส C++ สำหรับปัญหานี้ด้วย เราสามารถเขียนด้วยภาษาการเขียนโปรแกรมอื่นๆ เช่น C, Java, Python เป็นต้น เราหวังว่าคุณจะพบว่าบทช่วยสอนนี้มีประโยชน์