Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Sort Array of Strings ตาม Alphabetical Order จาก String อีกตัวใน C++

สมมติมี Array of Strings และ Reference String ต้อง Sort String Array ตามลำดับ Characters ใน Reference String String Array และ Reference String เป็น Lowercase

ตัวอย่าง String Array: ["hello", "programming", "science", "computer", "india"] Reference: "pigvxbskyhqzelutoacfjrndmw" หลัง Sort: ["programming", "india", "science", "hello", "computer"]

วิธี: Traverse Reference String เก็บ Character เป็น Key และ Index เป็น Value ใน Map ตอน Sort เปรียบเทียบ Strings ตาม Map ไม่ใช่ ASCII Order ถ้า c1 ปรากฏก่อน c2 ใน Map แสดงว่า c1 < c2

ตัวอย่างโค้ด C++

#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <vector>
using namespace std;

unordered_map<char, int> char_map;

bool compare(string c1, string c2) {
    for (int i = 0; i < min(c1.size(), c2.size()); i++) {
        if (char_map[c1[i]] == char_map[c2[i]])
            continue;
        return char_map[c1[i]] < char_map[c2[i]];
    }
    return c1.size() < c2.size();
}

int main() {
    string str = "pigvxbskyhqzelutoacfjrndmw";
    vector<string> v{ "hello", "programming", "science", "computer", "india" };
    char_map.clear();
    for (int i = 0; i < str.size(); i++)
        char_map[str[i]] = i;
    sort(v.begin(), v.end(), compare);
    for (auto x : v)
        cout << x << " ";
}

ผลลัพธ์

programming india science hello computer