【360筆試題】輸出字符串中出現最多子串的次數

例如:

  • 輸入aba,輸出1–> a
  • 輸入abcdab,輸出2–>ab

思路:
切割出的子串放入unordered_map,遍歷一遍元素找出最大值。

#include <iostream>
#include <string>
#include <unordered_map>

using namespace std;

int main(){
	string str;
	cin >> str;
	int Max = 0;
	unordered_map<string, int> Map;
	int index = 0;
	int gap = 1;
	while (gap <= (int)str.size()) {
		while ((str[index] != '\0')){
			if ((str[index + gap - 1]) == '\0') {
				break;
			}
			Map[str.substr(index, gap)]++;
			++index;
		}
		index = 0;
		++gap;
	}
	auto mit = Map.begin();
	while (mit != Map.end()) {
		Max = max(mit->second, Max);
		++mit;
	}
	cout << Max << endl;
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章