查找字符串中的最大值
Find the maximum in a string
给定一个字符串数组,我必须找到每个字符串中的最大值(在字典意义上),并从中生成一个字符串。
我想出了这个功能:
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;
}
给定一个字符串数组,我必须找到每个字符串中的最大值(在字典意义上),并从中生成一个字符串。 我想出了这个功能:
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;
}