📌  相关文章
📜  使用C++ STL的长度为2的不同连续子字符串的计数

📅  最后修改于: 2021-05-30 10:34:54             🧑  作者: Mango

给定一个字符串,任务是在给定的字符串中打印长度为2的所有不同的子字符串。所有子字符串应按字典顺序打印。

例子:

Input: str = "abcab"
Output: ab-2
        bc-1
        ca-1

Input: str = "xyz"
Output: xy-1
        yz-1

本文的目的是演示C++ STL中的映射和配对。

我们声明一个使用字符对键的映射d_pairs并计数为值。我们从起始索引遍历给定的字符串,以存储每对连续的对(如果还不存在的话),并在映射中增加其计数。循环完成后,我们在地图容器中获得了所有不同的连续对及其对应的出现次数。

请注意,使用地图是因为我们需要按排序顺序输出。如果不需要按排序顺序输出,则可以使用unordered_map()。 underdered_map()操作的时间复杂度为O(1),而map的时间复杂度为O(Log n)

// C++ STL based program to print all distinct
// substrings of size 2 and their counts.
#include
using namespace std;
  
void printDistinctSubStrs(string str)
{
    // Create a map to store unique substrings of
    // size 2
    map, int> dPairs;
  
    // Count occurrances of all pairs
    for (int i=0; ifirst.first << it->first.second
             << "-" << it->second << " ";
}
  
// Driver code
int main()
{
    string str = "abcacdcacabacaassddssklac";
    printDistinctSubStrs(str);
    return 0;
}

输出:

Distinct sub-strings with counts:
aa-1 ab-2 ac-4 as-1 ba-1 bc-1 ca-4 cd-1 dc-1 dd-1 ds-1 kl-1 la-1 sd-1 sk-1 ss-2 
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”