对给定字符串,取出它的子字符串,并把子字符串按照长度排序

来源:互联网 发布:linux 测试ping 编辑:程序博客网 时间:2024/05/18 21:11
#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;bool myfunction (const string str1,const string str2) {     return (str2.length() < str1.length());}void myfunction2(vector<string>&str){    for(int i=0;i<str.size();i++)        for(int j=0;j<str.size()-i-1;j++)            if(strlen(str[j].c_str())<strlen(str[j+1].c_str()))            {                swap(str[j],str[j+1]);            }            auto i=str.begin();            for(;i!=str.end();i++)            {                cout<<*i;                if(i==str.end()-1)                    break;                    cout<<' ';            }}void my_word(char input[], char output[]){    vector<string> str;    char *cur = input;    char *p = input;    int len;    bool flag = false;    while(*p != '\0'){        if((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z'))            p++;        else{            len = p-cur;            if(len > 1){                string tmp(cur,len);                for(int i=0;i<str.size();i++)                    if(tmp == str[i])                        flag = true;                if(flag != true)                    str.push_back(tmp);            }            cur = p+1;            p++;            flag = false;        }    }    len = p-cur;    if(len > 1){        string tmp(cur,len);        for(int i=0;i<str.size();i++)            if(tmp == str[i])                flag = true;        if(flag != true)            str.push_back(tmp);    }    //sort(str.begin(),str.end(),myfunction);    myfunction2(str);   }int main(){    char input[]="somedays nina loc buses, somes1234123drivers";    char output[500];    my_word(input, output);    return 0;}
0 0