题解 | #子串计算#

子串计算

https://www.nowcoder.com/practice/bcad754c91a54994be31a239996e7c11

#include<string>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
struct cishu {
	string str;
	int num;
};
bool cmp(cishu cs1, cishu cs2) {
	if (cs1.str < cs2.str)
		return true;
	return false;
}
int main() {		//10101
	string str;
	getline(cin, str);
	vector<cishu> res;
	cishu cs[1];
	//str.pop_back();
	for (int i = 0; i < str.size(); i++) {
		string result = "";
		for (int j = 1; j <= str.size()-i; j++) {
			//result += str[j];
			result=str.substr(i,j);
			//printf("*****%s\n", result.c_str());
			cs[0].str = result;
			cs[0].num = 1;
			int flag = 0;
			if (res.size() != 0) {
				for (int j = 0; j < res.size(); j++) {
					if (res[j].str == result) {
						res[j].num++;
						flag = 1;
						break;
					}
				}
				if (flag == 0) {
					res.push_back(cs[0]);
				}
			}
			else {
				res.push_back(cs[0]);
			}
		}
	}
	sort(res.begin(), res.end(),cmp);
	//printf("%s\n", str.c_str());
	for (int i = 0; i < res.size(); i++) {
		if(res[i].num>=2)
			printf("%s %d\n", res[i].str.c_str(), res[i].num);
	}
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务