在字符串中查找最大值

Find the maximum in a string

本文关键字:最大值 查找 字符串      更新时间:2023-10-16

给定一个字符串数组,我必须在每个字符串中找到最大值(在字典编纂意义上),并从中创建一个字符串。我已经拿出了这个功能:

void get_max_string(sa str_arr, int dim, string max_car) {
    int i, j;
    for(i=0; i<dim; i++) {
        for(j = 0 ; j+1 < strlen(str_arr[i]) ; j++) {
            if (str_arr[i][j] > str_arr[i][j+1])
                max_car[i] = str_arr[i][j];
        }
    }
    return;
}
"

sa"是一个字符串数组,"string"显然是一个字符数组。

问题是它似乎忽略了第一个字符。错误是什么?

这是一个解决方案,我尝试使用您的代码。你的代码的问题是你没有max_arr[i]赋给初始值。

void get_max_string(sa str_arr, int dim, string max_car) {
    int i, j;
    for(i=0; i<dim; i++) {
        max_car[i] = str_arr[i][0]; //init max_car[i] with the first letter
        for(j = 0 ; j + 1< strlen(str_arr[i]) ; j++) { 
            if (max_car[i] < str_arr[i][j+1])
                max_car[i] = str_arr[i][j+1]; // find a larger value
        }
    }
    return;
}

既然你标记了这个 c++,我会使用 c++。例如像这样(未测试)

string get_max_string(const vector<string>& sa) {
    string res;
    for_each(begin(sa), end(sa), [&res](const string& s){
        res.push_back(*max_element(s.begin(), s.end()));
    });
    return res;
}