首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

195.不含 AAA或BBB 的字符串

题号984:

给定两个整数和,返回任意字符串,要求满足:

的长度为,且正好包含个字母与个字母;

子串没有出现在中;

子串没有出现在中。

示例 1:

输入:A = 1, B = 2

输出:"abb"

解释:"abb", "bab" 和 "bba" 都是正确答案。

示例 2:

输入:A = 4, B = 1

输出:"aabaa"

提示:

对于给定的和,保证存在满足要求的。

解题思路:

如果A比较大,那么就先把字母a放入字符串s中,反之,如果B比较大,就先放B(贪心策略);

同时需要考虑a、b不能连续出现3次。

具体操作如下——

用变量count_a、count_b保存字符串中字母'a'、'b'连续出现的次数,用于保证不连续出现3个相同字母;

如果字符串长度小于给定的A与B之和,说明字母还没添加完毕,以此作为循环条件;

根据当前A、B的大小选择字母,每次添加一个字母a,则A--,当且仅当A>0时可选字母a(字母b同理);

如果AB,则优先考虑字母b)。

每次选择字母a后,count_a要加1,count_b清零,A-1(选字母b同理)。

代码实现:

// = =代码写的太啰嗦了...循环内的if else应再优化。

时间复杂度和空间复杂度为O(A+B)。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190201G11FNN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券