อภิปรายปัญหาในการจัดเรียงสตริงของตัวอักษรในลำดับการจัดเรียงใหม่และเพิ่มจำนวนเต็มทั้งหมดที่มีอยู่ในสตริง ตัวอย่างเช่น
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 เป็นต้น เราหวังว่าคุณจะพบว่าบทช่วยสอนนี้มีประโยชน์