给定字符串,任务是在给定字符串打印长度为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等的更多准备工作,请参阅“完整面试准备课程” 。