一.前言
以前都是把笔记记载本子上,但是越来越发现很麻烦,所以最近开了博客,希望能更好的保存学习笔
记
项目填坑和一些解析心得。
写这个帖子是因为在看书的时候发现一个小问题,“
判断二个字符串是不是"相同
字母异序词"”,比如“abcd”与“acdb”就是一组相同字母异词序的字符串。
二.代码
1.减法
def is_different(s1,s2):
list1=list(s1)
list2=list(s2)
if len(list1)!=len(list2):
print("不是同字母异词序")
else:
for x in list1:
if x in list2:
list2.remove(x)
if list2:
print("不是同字母异词序")
else:
print("是同字母异词序")
if __name__=="__main__":
s1="assbdcff"
s2="asdsbcff"
is_different(s1,s2)
主要的思路是先判断字符串长度是否一样,一样的话再把一个字符串里面包含的另一个字符串的字符减掉
,如果最后剩下空列表这表示他们是同字母异词序字符串。
2.加法
def function(s):
_list_=list(s)
alien={}
for x in _list_:
if x not in alien.keys():
alien[x]=1
else:
alien[x] +=1
return alien
def is_different(s1,s2):
alien_0=function(s1)
alien_1=function(s2)
for i in alien_0.keys():
if i in alien_1.keys():
if alien_1[i]==alien_0[i]:
pass
else:
print("不是同字母异词序")
exit()
else:
print("不是同字母异词序")
exit()
print("是同字母异词序")
if __name__=="__main__":
s1="assbdcff"
s2="asdsbcff"
is_different(s1,s2)
这个的设计思路是把两个字符串放在字典里面,关键字是字符,值是出现的次数,然后来比较两之间的不同。
还有第三种想法的,把两个字符串放在一起,验证每个字母出现的次数,判断是否都是偶数次,还是有为奇数的字母,下次有空再写。