admin管理员组

文章数量:819743

气球的最大数量

给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)。

字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。

这题其实很简单,我们只需要统计a,b,l,o,n的个数就行,然后将l和o的个数除以二,然后比较它们中最小的是多少,因为木桶效应,组成气球不是看最多的字母,而是看最少的字母,所以我们先创建一个容量为5的数组arr,里面分别放置a,b,l,o,n的个数,其中和o的个数除以二,然后我们开始字符串,每次遇到这五个字母,就将它们的次数加1。遍历完后,我们在遍历arr,记录数组的最小值,(其实我们可以遍历到0就直接返回0的,但是因为数组小,所以我们可以直接忽略它)然后返回它,它就是最多的气球。下面是代码,我们做题时应该很少用到switch吧,现在我们就可以借着这个机会,来运用它。

int maxNumberOfBalloons(char* text) {

    int arr[5] = { 0 };

    while (*text)

    {

        switch (*text)

        {

        case 'a':

            arr[0]++;

            break;

        case 'b':

            arr[1]++;

            break;

        case 'l':

            arr[2]++;

            break;

        case 'o':

            arr[3]++;

            break;

        case 'n':

            arr[4]++;

            break;

        default:

            break;

        }

        text++;

    }

    arr[2] /= 2;

    arr[3] /= 2;

    int i = 0;

    int min = arr[0];

    for (i = 0; i < 5; i++)

   }

        if (min > arr[i])

            min = arr[i];

    }

    return min;

}

本文标签: 气球的最大数量