首页 > 解决方案 > 尝试使用数组在字符串中找到最短的句子

问题描述

我有在句子数组中查找最长句子的功能,我现在如何将其转换为最短的,然后将其复制到 char R[red]; 然后操纵最短的句子的最后一个单词,将第一个和最后一个字母变为大写

void longest (char SENTENCE[max][red],char R[red], int n){
    int longest = 0;
    for (int i = 0 ; i < n ; i++){
        if(strlen(SENTENCE[i]) > longest){
            longest = strlen(SENTENCE[i]);
            strcpy_s(R,red,SENTENCE[i]);
        }
    }

标签: c++c-stringsminimumstrlen

解决方案


对于初学者来说,有一个标准算法std::min_element,它返回一个指向容器中最小元素的迭代器。但是,将它与函数 strlen 一起使用不会很有效。

所以你确实可以自己编写这样的函数。它可以如下所示

void shortest( const char s[][red], char t[], size_t n )
{
    t[0] = '\0';

    if ( n != 0 )
    {
        size_t min_i   = 0;
        size_t min_len = std::strlen( s[0] );

        for ( size_t i = 1; i < n; i++ )
        {
            size_t len = std::strlen( s[i] );
            if ( len < min_len )
            {
                min_i   = i;
                min_len = len;
            }
        }

        std::strcpy( t, s[min_i] ); 
    }
}

推荐阅读