给你一个字符串 s ,如果 s 是一个 好 字符串,请你返回 true ,否则请返回 false 。
如果 s 中出现过的 所有 字符的出现次数 相同 ,那么我们称字符串 s 是 好 字符串。
这题其实不难,我们可以创建一个数组,用来存放每个字母出现的次数,因为字母数为26,所以我们创建一个元素个数为26的数组arr,然后遍历整个字符串,将每个字母的次数放进数组,然后创建一个变量flag用来记录一个字符串中字母的的次数,然后用其他的字母次数与它比较,如果不同,则可以直接判断为否,然后结束,如果遍历完后,则直接判断为是。下面是代码。
bool areOccurrencesEqual(char* s) {
int arr[26] = { 0 };
int len = strlen(s);
int flag = 0;
while (*s)
{
arr[*s - 'a']++;//记录字母的次数
s++;
}
for (int i = 0; i < 26; i++)
{
if (arr[i] != 0)
{
if (flag == 0)
{
flag = arr[i];
}
else
{
if (arr[i] != flag)
{
return false;
}
}
}
}
return true;
}