sit-in lab 4. given a number of strings containing only “a”, “b”, “c”, “d” check...
TRANSCRIPT
String Checker IISit-in lab 4
Given a number of strings containing only “a”, “b”, “c”, “d”
Check each string that it follows the pattern anbmcmdn where m, n >= 1
Use only stack OR queue
Problem Description
Look at pattern: anbmcmdn
Notice that it is LIFO So we use a Stack!
Many ways of solving with a stack… here we show one way
Solution
Process one character from the input String at a time.
For example: for(int j = 0; j < s.length(); j++){
strCheck.nextChar(s.charAt(j));}
Solution
If character is “a”◦ We push to stack if
the stack is empty, or the top of the stack is “a”
◦ Else is not valid string
If character is “b”◦ Remember that we have a “b” (set a boolean flag)◦ We push to stack if
the stack is NOT empty, and the top of the stack is “a” or “b”
◦ Else is not valid string
Solution
We need to check this so that things like “bc” will be caught
If character is “c”◦ We pop from the stack if
the stack is NOT empty, and the top of the stack is “b”
◦ Else is not valid string
If character is “d”◦ We pop from the stack if
the stack is NOT empty, and the top of the stack is “a”, and there was a “b” read in (special check for things like “ad”)
◦ Else is not valid string
Solution
Finally, before concluding is valid string, check that stack is empty◦ We need this to catch things like “aaaaaabbccd”
(there will be many “a” left behind in the stack)
Solution
End
String Checker I