Sunday, March 9, 2014

[Stack Implementation in Python]

class Stack:
     def __init__(self):
         self.items = []

     def isEmpty(self):
         return self.items == []

     def push(self, item):
         self.items.append(item)

     def pop(self):
         return self.items.pop()

     def peek(self):
         return self.items[len(self.items)-1]

     def size(self):
         return len(self.items)

[Reverse String using Stack]

from stack import *
def revString(String):
index=0
s=Stack()
while index < len(String):
symbol=String[index]
print symbol
s.push(symbol)
index=index + 1
revstring=""

while not s.isEmpty():
revstring=revstring + str(s.pop())
return revstring

print (revString('parag'))



[Parenthesis matching using Stack]

from stack import * 
def parChecker(symbolString):
s=Stack()
balanced = True
index=0
while index < len (symbolString) and balanced:
symbol = symbolString[index]
print symbol
if symbol in "([{" :
s.push(symbol)
else:
if s.isEmpty():
balanced=False
else:
top=s.pop()
if not matches(top,symbol):
balanced=False
index=index + 1
if balanced and s.isEmpty():
return True
else:
return False
def matches(open,close):
opens="([ {"
close =")]}"
return opens.index(open)==close.index(close)
print(parChecker('[{([][])}()}'))

[ Decimal to Binary Conversion ]

from stack import *

def divby2(number):
s=Stack()
while number > 0:
remainder=number % 2
s.push(remainder)
number = number // 2
binString=""
while not s.isEmpty():
binString=binString + str(s.pop())
return binString

print (divby2(10))