class
GFG{
static
int
dfa =
0
;
static
void
start(
char
c)
{
if
(c ==
'a'
) {
dfa =
10
;
}
else
if
(c ==
'b'
) {
dfa =
1
;
}
else
{
dfa = -
1
;
}
}
static
void
state01(
char
c)
{
if
(c ==
'a'
) {
dfa =
11
;
}
else
if
(c ==
'b'
) {
dfa =
2
;
}
else
{
dfa = -
1
;
}
}
static
void
state02(
char
c)
{
if
(c ==
'b'
) {
dfa =
0
;
}
else
if
(c ==
'a'
) {
dfa =
12
;
}
else
{
dfa = -
1
;
}
}
static
void
state10(
char
c)
{
if
(c ==
'b'
) {
dfa =
11
;
}
else
if
(c ==
'a'
) {
dfa =
20
;
}
else
{
dfa = -
1
;
}
}
static
void
state11(
char
c)
{
if
(c ==
'b'
) {
dfa =
12
;
}
else
if
(c ==
'a'
) {
dfa =
21
;
}
else
{
dfa = -
1
;
}
}
static
void
state12(
char
c)
{
if
(c ==
'b'
) {
dfa =
10
;
}
else
if
(c ==
'a'
) {
dfa =
22
;
}
else
{
dfa = -
1
;
}
}
static
void
state20(
char
c)
{
if
(c ==
'b'
) {
dfa =
21
;
}
else
if
(c ==
'a'
) {
dfa =
0
;
}
else
{
dfa = -
1
;
}
}
static
void
state21(
char
c)
{
if
(c ==
'b'
) {
dfa =
22
;
}
else
if
(c ==
'a'
) {
dfa =
1
;
}
else
{
dfa = -
1
;
}
}
static
void
state22(
char
c)
{
if
(c ==
'b'
) {
dfa =
20
;
}
else
if
(c ==
'a'
) {
dfa =
2
;
}
else
{
dfa = -
1
;
}
}
static
boolean
isAccepted(String st)
{
int
i, len = st.length();
char
[] str = st.toCharArray();
for
(i =
0
; i < len; i++) {
if
(dfa ==
0
)
start(str[i]);
else
if
(dfa ==
1
)
state01(str[i]);
else
if
(dfa ==
2
)
state02(str[i]);
else
if
(dfa ==
10
)
state10(str[i]);
else
if
(dfa ==
11
)
state11(str[i]);
else
if
(dfa ==
12
)
state12(str[i]);
else
if
(dfa ==
20
)
state20(str[i]);
else
if
(dfa ==
21
)
state21(str[i]);
else
if
(dfa ==
22
)
state22(str[i]);
else
return
false
;
}
if
(dfa ==
0
|| dfa ==
11
|| dfa ==
22
)
return
true
;
else
return
false
;
}
public
static
void
main(String []args)
{
String str =
"aaaabbbb"
;
if
(isAccepted(str))
System.out.println(
"ACCEPTED"
);
else
System.out.println(
"NOT ACCEPTED"
);
}
}