本篇博客会讲解力扣“1374. 生成每种字符都是奇数个的字符串”的解题思路,这是题目链接。
这道题的解题思路很巧妙,它利用了字符串长度n的奇偶性:
- 如果n是奇数,那么就把字符串全部填充为’a’,这样每种字符都是奇数个。
- 如果n是偶数,那么就把字符串除了最后一个位置外都填充为’a’,最后一个位置填充为’b’,这样也能保证每种字符都是奇数个。
具体的实现方法是,先创建一个长度为n的全’a’的字符串,然后判断n是否是偶数,如果是,就把最后一个字符替换为’b’。
char * generateTheString(int n){
char* ret = (char*)calloc(n+1, sizeof(char));
memset(ret, 'a', n);
// n为奇数,则n个a
// n偶数,则n-1个a和1个b
if (n % 2 == 0)
{
ret[n-1] = 'b';
}
return ret;
}
总结
本题的要求很灵活,只要返回一个满足条件的字符串即可,因此我们可以采用最简单的策略,根据字符串长度n的奇偶性来选择填充字符的方法,利用了这样一个规律:奇数=奇数(本身),偶数=奇数(-1)+奇数(+1)。
感谢大家的阅读!