字符串组合

题目描述

输入一个字符串,输出该字符串中相邻字符的所有组合。
举个例子,如果输入abc,它的组合有a、b、c、ab、bc、abc。(注意:输出的组合需要去重)(40分)

输入描述:

一个字符串

输出描述:

一行,每个组合以空格分隔,相同长度的组合需要以字典序排序,且去重。
示例1

输入

复制
bac

输出

复制
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;
}

  运行结果截图:

不一样的烟火
原文地址:https://www.cnblogs.com/cstdio1/p/11131205.html