-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCheckAB.java
More file actions
57 lines (53 loc) · 1.58 KB
/
CheckAB.java
File metadata and controls
57 lines (53 loc) · 1.58 KB
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
// Check AB
// Send Feedback
// 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
// Explanation for Sample Input 2
// In the above example, a is not followed by either "a" or "bb", instead it's followed by "b" which results in false to be returned.
import java.util.Scanner;
public class CheckAB {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Enter String : ");
String input = s.nextLine();
boolean ans = checkAB(input);
System.out.println("Output : " + ans);
s.close();
}
public static boolean checkAB(String input)
{
if(input.length()==0)
{
return true;
}
if(input.charAt(0)!='a')
{
return false;
}
if(input.length()>=3 && "abb".equals(input.substring(0,3))){
return checkAB(input.substring(3));
}
else
{
return checkAB(input.substring(1));
}
}
}