Download presentation
Presentation is loading. Please wait.
Published byRandolph Simon Modified over 9 years ago
1
Sit-in lab 4
2
Given a number of strings containing only “a”, “b”, “c”, “d” Check each string that it follows the pattern a n b m c m d n where m, n >= 1 Use only stack OR queue
3
Look at pattern: a n b m c m d n Notice that it is LIFO So we use a Stack! Many ways of solving with a stack… here we show one way
4
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)); }
5
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 We need to check this so that things like “bc” will be caught
6
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
7
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)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.