#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Jan 31 21:13:07 2018
@author: vicky
"""
class Solution:
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
s=list(str(int(a)+int(b)))
#sting不可变,list可变,所以把s转化成list接下来更方便
#注意:int不能直接转换为list,要把int先转换为str,再用str转化为list
s2=s
k=len(s)-1
while k>0:
if s[k]>="2":#注意要打双引号
s2[k]=str(int(s[k])-2)
s2[k-1]=str(int(s[k-1])+1)
k=k-1
if s2[0]>="2":
s2[0]=str(int(s[k])-2)
s2.insert(0,"1") #注意insert用于list,sting直接用加号+就行
#list.insert(index, obj)先位置,后对象
return ''.join(s2)
if __name__=="__main__":
a="1111"
b="1111"
print(Solution().addBinary(a,b))
class Solution:
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
return bin(int(a,2)+int(b,2))[2:]
int(x, base=10),把某进制数转换为十进制表示。
其中,x表示字符串string或数字;base表示进制数,默认十进制,可改。
eg:int(a,2)表示把取2进制的a转换为取十进制所对应的数,eg:int('1111',2)=15
bin(x):返回x的二进制的sting表示‘0b...‘,从第二个位置开始读起,x为 int 或者 long int 数字。
eg:bin(30)='0b11110',提取时从第二个位置开始读起。
类型转换:
int->str:str(num)
str->list:list(string) 注意int不能直接转换为list,要把int先转换为str,再用str转化为list
eval(string)
list->str: ''.join(string)
eval()函数:eval(expression[, globals[, locals]])将字符串str当成有效的表达式来求值并返回计算结果
其中,expression -- 表达式。
globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
eg:eval('pow(2,2)')=4,
eval("{1: 'a', 2: 'b'}")={1: 'a', 2: 'b'}
修改sting字符有三种方法:http://blog.youkuaiyun.com/saltriver/article/details/52194921
(因为sting不可变类型,不能用等号赋值改变)
1.将sting转换成list后修改值,然后用join组成新字符串
join函数:str.join(sequence),其中sequence表示要连接的元素序列。eg:"-".join(("1","a"))
2.用replace函数:str.replace(old, new[, max]),eg:str.replace("is", "was")
其中old表示将被替换的子字符串,
new表示新字符串,用于替换old子字符串。
max表示可选字符串, 替换不超过 max 次
3.序列切片:eg:string = 'abcdafg'
newstr = string[:4] + '1' + string[5:] #abcd1fg