用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c++代码库

查找所有公共子串_lcs_vt

2013-06-29 作者: kelly举报

[c++]代码库

const vector<string> lcs_vt(const string &str1, const string &str2)
{
    int col_num = str1.length();
    int row_num = str2.length();
    int map[row_num][col_num];

    bzero(map, sizeof(map));
    vector<string> ret;

    for(int i = 0; i < col_num; i++) {
        for(int j = 0; j < row_num; j++) {
            if (str1[i] == str2[j]) {
                map[j][i] = 1;
            }
        }
    }

    int list_flag = 0;
    string temp;
    for (int i = col_num - 1; i >= 0; i--) {
        int j = 0;
        temp = "";
        while(j + i < col_num && j < row_num) {
            if (map[j][j + i] == 1) {
                temp += str1[j + i];
            } else {
                temp += '#';
            }
            j++;
        }
        vector<string> splited_str = split_with_string(temp, "#");
        vector_unique(splited_str);
        for(unsigned int i = 0; i < splited_str.size(); i++) {
            ret.push_back(splited_str[i]);
        }
    }

    for (int i = 1; i < row_num; i++) {
        int j = 0;
        temp = "";
        while(j < col_num && j + i < row_num) {
            if (map[j + i][j] == 1) {
                temp += str2[j + i];
            } else {
                temp += '#';
            }
            j++;
        }
        //if (!(temp.empty())) {
        //  cout << "###" << temp << endl;
        //}
        vector<string> splited_str = split_with_string(temp, "#");
        vector_unique(splited_str);
        for(unsigned int i = 0; i < splited_str.size(); i++) {
            ret.push_back(splited_str[i]);
        }
    }
    return ret;
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...