📌  相关文章
📜  根据给定的子字符串范围对字符串数组进行排序

📅  最后修改于: 2021-04-29 14:55:05             🧑  作者: Mango

给定两个正整数IX以及字符串数组arr [] ,任务是根据从大小X的索引I开始的怀疑对给定的字符串数组进行排序。

例子:

方法:这个想法是根据大小为X的索引I在给定数组中创建所有字符串的子字符串,并将子字符串对的计数与对应的字符串在成对映射中。在成对插入地图之后。插入后,遍历地图并打印字符串。

下面是上述方法的实现:

CPP
// C++ program for the above approach
#include 
using namespace std;
  
// Function to sort the given array
// of strings based on substring
void sortArray(vector s,
               int l, int x)
{
    // Map of pairs to sort vector
    // of strings
    map, int> mp;
  
    for (int i = 0; i < s.size(); i++) {
  
        // Create substring from index
        // 'l' and of size 'X'
        string part = s[i].substr(l, x);
  
        // Insert in Map
        mp[{ part, s[i] }] += 1;
    }
  
    // Print the sorted vector of strings
    for (auto it = mp.begin();
         it != mp.end(); ++it) {
  
        // Traverse the number of time
        // a string is present
        for (int j = 0; j < it->second; j++) {
  
            // Print the string
            cout << it->first.second << ' ';
        }
    }
}
  
// Driver Code
int main()
{
    // Given array of strings
    vector arr;
    arr = { "baqwer", "zacaeaz", "aaqzzaa",
            "aacaap", "abbatyo", "bbbacztr",
            "bbbdaaa" };
  
    // Given I and X
    int I = 2, X = 2;
  
    // Function Call
    sortArray(arr, I, X);
    return 0;
}


输出:
abbatyo bbbacztr bbbdaaa aacaap zacaeaz baqwer aaqzzaa


时间复杂度: O(N * log N)
辅助空间: O(N)