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` `'a'` letters, and exactly `b` `'b'` letters,
• The substring `'aaa'` does not occur in `s`, and
• The substring `'bbb'` does not occur in `s`.

Example 1:

```Input: a = 1, b = 2
Output: "abb"
Explanation: "abb", "bab" and "bba" are all correct answers.
```

Example 2:

```Input: a = 4, b = 1
Output: "aabaa"
```

Constraints:

• `0 <= a, b <= 100`
• It is guaranteed such an `s` exists for the given `a` and `b`.

984. String Without AAA or BBB
``````struct Solution;

impl Solution {
fn str_without3a3b(mut a: i32, mut b: i32) -> String {
if a == b {
let mut res = "".to_string();
for _ in 0..a {
res += "ab";
}
return res;
}
if a > b {
let mut res = "".to_string();
while a > 0 {
res += "a";
a -= 1;
if a > b {
res += "a";
a -= 1;
}
if b > 0 {
res += "b";
b -= 1;
}
}
return res;
}
if b > a {
let mut res = "".to_string();
while b > 0 {
res += "b";
b -= 1;
if b > a {
res += "b";
b -= 1;
}
if a > 0 {
res += "a";
a -= 1;
}
}
return res;
}
"".to_string()
}
}

#[test]
fn test() {
let a = 1;
let b = 2;
let res = "bab".to_string();
assert_eq!(Solution::str_without3a3b(a, b), res);
}
``````