-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCheck AB.cpp
70 lines (55 loc) · 1.36 KB
/
Check AB.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
Check AB
Suppose you have a string, S, made up of only 'a's and 'b's. Write a recursive function that checks if the string was generated using the following rules:
a. The string begins with an 'a'
b. Each 'a' is followed by nothing or an 'a' or "bb"
c. Each "bb" is followed by nothing or an 'a'
If all the rules are followed by the given string, return true otherwise return false.
Input format :
String S
Output format :
'true' or 'false'
Constraints :
1 <= |S| <= 1000
where |S| represents length of string S.
Sample Input 1 :
abb
Sample Output 1 :
true
Sample Input 2 :
abababa
Sample Output 2 :
false
*/
#include<string>
#include<algorithm>
bool checkAB(char input[],int count = 0) {
// Write your code here
// base case
if(*input == '\0') {
return true;
}
// corner case
if(!count) {
if(input[0] != 'a') {
return false;
}
}
//nth step
//first Rule
if(input[0] == 'a') {
if(input[1] == '\0' or input[1] == 'a' or (input[1] == 'b' and input[2] == 'b')) {
checkAB(input + 1, count + 1);
} else {
return false;
}
}
// second Rule
else if(input[0] == 'b' and input[1] == 'b') {
if(input[2] == 'a' or input[2] == '\0') {
checkAB(input + 2,count + 1);
} else {
return false;
}
}
}