题目
给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 “balloon”(气球)。
字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 “balloon”。
关于c
气球问题的实现
找每个目标字符串每个字母在给出的串中的个数,把目标字符串每个字母的数量除以目标该字母的数量,最后最小数就是气球数
代码
#define min(a , b) ((a) < (b) ? (a) : (b))
int maxnumberofballoons( char * text)
{
int cnt[5];
int n = strlen (text);
memset(cnt , 0 , sizeof(int)*5);
for (int i = 0 ; i < n ; i++ )
{
if (text[ i ] == 'b' )
cnt[ 0 ]++;
else if (text[ i ] == 'a' )
cnt[ 1 ]++;
else if (text[ i ] == 'l' )
cnt[ 2 ]++;
else if (text[ i ] == 'o' )
cnt[ 3 ]++;
else if (text[ i ] == 'n' )
cnt[ 4 ]++;
}
cnt[ 2 ] /= 2;
cnt[ 3 ] /=2;
int res = int_max;
for (int i = 0 ; i < 5 ;i++)
res=min( res, cnt[ i ] );
return res;
}
重点代码
求串的长度
strlen(text)
C++中常量INT_MAX和INT_MIN分别表示最大、最小整数,定义在头文件limits.h中。
#define INT_MAX 2147483647
#define INT_MIN (-INT_MAX - 1)
int res = int_max;
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法
memset(cnt , 0 , sizeof(int)*5);