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