Finite State Machine: Check Whether String Contains ‘abb’ or not

import java.io.*;
public class Noabb 
{
    public static void main(String[] args)throws IOException 
    {
        BufferedReader obj = new BufferedReader (new InputStreamReader (System.in));
        int state[][]={{1,0},{1,2},{1,3},{3,3}};
        int q =0;
        String str;
        System.out.println("Enter your string");
        str=obj.readLine();
        
        for(int i=0;i<str.length();i++)
        {
            switch(str.charAt(i))
            {
                case 'a':
                    q=state[q][0];
                    break;
                case 'b':
                    q=state[q][1];
                    break;
            }
        }
        
        if (q==3)
        {
            System.out.println("String rejected");
        }
        else
        {
            System.out.println("String accepted");
        }
    }
}

/* OUTPUT 

Enter your string
aaaaababababababababa
String accepted


Enter your string
ababababaaabbbababab
String rejected

 */

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.