LeetCode 984.不含AAA或BBB的字符串(C++)
给定两个整数 A 和 B,返回任意字符串 S,要求满足:
S的长度为A + B,且正好包含A个'a'字母与B个'b'字母;- 子串
'aaa'没有出现在S中; - 子串
'bbb'没有出现在S中。
示例 1:
输入:A = 1, B = 2
输出:"abb"
解释:"abb", "bab" 和 "bba" 都是正确答案。
示例 2:
输入:A = 4, B = 1
输出:"aabaa"
提示:
0 <= A <= 1000 <= B <= 100- 对于给定的
A和B,保证存在满足要求的S。
思路:直观感觉,我们应该先选择当前所剩最多的待写字母写入字符串中。举一个例子,如果 A = 6, B = 2,那么我们期望写出 'aabaabaa'。进一步说,设当前所剩最多的待写字母为 x,只有前两个已经写下的字母都是 x 的时候,下一个写入字符串中的字母才不应该选择它。
class Solution {
public:
string strWithout3a3b(int A, int B) {
string str = "";
char a = 'a', b = 'b';
if (A < B) {
swap(a, b);
swap(A, B);
}
//cout << "A:" << A << " " << a << " B:" << B << " " << b << endl;
while (A > || B > ){
bool flag = false;
if (A - B >= ) {
flag = true;
}
if (A - >= ) {
str.push_back(a);
str.push_back(a);
A = A - ;
}
else if (A == ) {
str.push_back(a);
A--;
}
if (flag) {
str.push_back(b);
B--;
}
else if(B - >= ){
str.push_back(b);
str.push_back(b);
B = B - ;
}
else if (B == ) {
str.push_back(b);
B--;
}
}
return str;
}
};
下面是大哥们的解法:
string strWithout3a3b(int A, int B) {
//保证A > B
string str = "";
char a = 'a', b = 'b';
if (A < B) {
swap(A, B);
swap(a, b);
}
while (A > || B > ) {
if (A > ) {
str.push_back(a);
A --;
}
if (A > B) {
str.push_back(a);
A --;
}
if (B > ) {
str.push_back(b);
B --;
}
}
return str;
}
LeetCode 984.不含AAA或BBB的字符串(C++)的更多相关文章
- [leetcode]984. 不含 AAA 或 BBB 的字符串
给定两个整数 A 和 B,返回任意字符串 S,要求满足: S 的长度为 A + B,且正好包含 A 个 'a' 字母与 B 个 'b' 字母: 子串 'aaa' 没有出现在 S 中: 子串 'bbb' ...
- 【LeetCode】String Without AAA or BBB(不含 AAA 或 BBB 的字符串)
这道题是LeetCode里的第984道题. 题目要求: 给定两个整数 A 和 B,返回任意字符串 S,要求满足: S 的长度为 A + B,且正好包含 A 个 'a' 字母与 B 个 'b' 字母: ...
- [Swift]LeetCode984. 不含 AAA 或 BBB 的字符串 | String Without AAA or BBB
Given two integers A and B, return any string S such that: S has length A + B and contains exactly A ...
- 【LeetCode】984. String Without AAA or BBB 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字符串构造 日期 题目地址:https://leet ...
- LC 984. String Without AAA or BBB
Given two integers A and B, return any string S such that: S has length A + B and contains exactly A ...
- 【leetcode】984. String Without AAA or BBB
题目如下: Given two integers A and B, return any string S such that: S has length A + B and contains exa ...
- LeetCode:比较含退格字符串【844】
LeetCode:比较含退格字符串[844] 题目描述 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = ...
- 【Java】 剑指offer(48) 最长不含重复字符的子字符串
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字 ...
- 《剑指offer》第四十八题(最长不含重复字符的子字符串)
// 面试题48:最长不含重复字符的子字符串 // 题目:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子 // 字符串的长度.假设字符串中只包含从'a'到'z'的字符. #inclu ...
随机推荐
- fiddler----APP弱网测试
转自:http://www.51testing.com/html/01/n-3727001.html APP弱网模拟测试 移动端测试区别于PC端测试的一点就是网络的多变性:不同的网络环境和网络制式的差 ...
- 对Dapper的一点改造
微软推出的ORM, EF在我开发的项目中给我的感觉一直都是慢.优点是高度封装的底层.便于开发. Dapper在多篇性能比较的网站中.都是名列前三.缺点是手写SQL,不便于开发. 如果能结合EF的优 ...
- Android emulator中C代码的调试——gdb/gdbservers时遇到的坑
版权声明:本文为博主原创文章,未经博主允许不得转载. 先写个helloworld吧,在Android源码树中创建文件夹external/helloworld,加入文件: // helloworld.c ...
- CHUI类
自定义控件程序运行流程 setNeedsLayOut和setNeedsDisplay区别 masonry使用技巧 1.普通展示 UILabel UIView UI控件的位置 U ...
- go语言入门教程百度网盘 mysql图形化操作与数据导入
mysql图形化操作与数据导入 @author:Davie 版权所有:北京千锋互联科技有限公司 数据库存储技术 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.每个数据库都有一个 ...
- 识别子串 (string)——后缀自动机+线段树
题目 [题目描述] 一般地,对于一个字符串 S,和 S 中第 $ i $ 个字符 x,定义子串 $ T=S(i.j) $ 为一个关于 x 的识别子申,当且仅当: 1.$ i \leq x \leq j ...
- 洛谷P3726 [AH2017/HNOI2017]抛硬币(组合数+扩展Lucas)
题面 传送门 题解 果然--扩展\(Lucas\)学了跟没学一样-- 我们先考虑\(a=b\)的情况,这种情况下每一个\(A\)胜的方案中\(A\)和\(B\)的所有位上一起取反一定是一个\(A\)败 ...
- UVA11270 Tiling Dominoes
\(\color{#0066ff}{ 题目描述 }\) 给定一个m×n的矩形网格,用1×2多米诺骨牌完全平铺. 请注意,即使一个平铺的旋转与另一个平铺相匹配,它们仍算作不同的平铺. 下面显示了一个平铺 ...
- hdu 6512 Triangle
Problem Description After Xiaoteng took a math class, he learned a lot of different shapes, but Xiao ...
- 利用JPanel和JLabel设置背景图片
//创建面板1,放置背景图片1 JPanel jPanelTop=new JPanel(); jPanelTop.setBounds(,-,,); //x=0,y=-5用来设置面板距离窗体左上角的距离 ...