1
0
mirror of https://github.com/SunnyQjm/algorithm-review.git synced 2026-06-03 08:16:43 +08:00
Files
algorithm-review/chapter3/5_divide-by-2.py
T

56 lines
1.2 KiB
Python

#!/usr/bin/env python
# coding=utf-8
##########################################################
# 栈的应用——十进制转二进制
##########################################################
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)
class Solution:
def divideBy2(self, decNumber):
"""
(knowledge)
算法功能说明:传入一个正整数,将其转换为2进制表达方式
思路:
1. 依次除2取余,使用栈保存余数
2. 接着依次弹栈,构造出二进制串
"""
stack = Stack()
while decNumber > 0:
stack.push(decNumber % 2)
decNumber = decNumber // 2
result = ""
while not stack.isEmpty():
result += str(stack.pop())
return result
if __name__ == '__main__':
solution = Solution()
print(solution.divideBy2(233), "= 11101001")
print(solution.divideBy2(42), "= 101010")