题目描述
输入一个字符串,输出该字符串中相邻字符的所有组合。
举个例子,如果输入abc,它的组合有a、b、c、ab、bc、abc。(注意:输出的组合需要去重)(40分)
举个例子,如果输入abc,它的组合有a、b、c、ab、bc、abc。(注意:输出的组合需要去重)(40分)
输入描述:
一个字符串
输出描述:
一行,每个组合以空格分隔,相同长度的组合需要以字典序排序,且去重。
示例1
输出
复制a b c ac ba bac
解题:利用set进行排序和去重(现在还有点问题),之后再修改吧,,排序没有按要求
#include "iostream" #include "set" #include "string" using namespace std; int main() { set<string> m; string str; int num=0; getline(cin,str); while(1){ num++; if(num==str.size()) break; for(int i=0;i<str.size();i++){ for(int j=0;j<str.size();j++){ if(j-i==num) m.insert(str.substr(i,num));// else if(i==str.size()-num) m.insert(str.substr(i,num));//临界的情况 else if(j-i>num) break; } } } m.insert(str); set<string>::iterator it=m.begin(); while(it!=m.end()){ cout<<*it<<" "; it++; } return 0; }
运行结果截图: