#list(str_name可以把字符串每个字符转换成列表的一个元素。注意str_name.split("分隔符")方法是按分隔符分割字符串,分开后每个区域作为一个列表元素
def match_onebyone(str1,str2):
str_list1 = list(str1)
str_list2 = list(str2)
flag = 1
#注意这里如果要避免两个字符串内某个字母数量不一样的情况,需要找到后将str2中字符删除。删除后重新计算长度,不影响str1下一个字母比较。
#注意不能直接 for i in 5,需要用for i in range(5)
#注意当for i in range(0)时,i不能取任何值,但是也不会报错。所以要考虑空列表的情况。
for goal1 in str_list1:
if flag ==1 and len(str_list2)!=0:
for i in range(len(str_list2)):
if goal1 == str_list2[i]:
del str_list2[i]
break
#这里注意一个删除找到字符后的问题,删除后就要break马上检查下一个,否则elif里面可能会报错,因为len(str2)变了。
#注意这里要考虑两个字符串长度不同的问题,也可以一开始检查长度或者比对后检查长度。
elif goal1 != str_list2[i] and i ==(len(str_list2)-1):
#print (i)
#print (str_list2[i])
flag = 0
print ("字母",goal1,"没有找到,不是换位词")
elif len(str_list2)==0:
flag = 0
print ("字母",goal1,"没有找到,不是换位词")
break
if flag ==1 and len(str_list2)==0:
print (str1,"和",str2,"是换位词")
elif flag ==1 and len(str_list2)!=0:
print(str2,"比",str1,"长,不是换位词")
#str1 = "Testwords"
#print (list(str1))
#match_onebyone(a,b)
def sort_words(str1,str2):
str_list1 = list(str1)
str_list2 = list(str2)
str_list1.sort()
str_list2.sort()
if str_list1 == str_list2:
print(str_list1,"和",str_list2,"是换位词")
else:
print(str_list1,"和",str_list2,"不是换位词")
#sort_words(a,b)
# ord("字符")表示该字符对应的unicode编码,支持汉字。
def count_words(str1,str2):
str_list1 = list(str1)
str_list2 = list(str2)
#print (str_list1,str_list2)
#特别注意不能用list1=list2=[0]*26的格式,否则这两个变量会一直相等
list1,list2 = [0]*26,[0]*26
for i in str_list1:
location = ord(i)-ord('A')
list1[location] = list1[location]+1
print("-----------------------")
for i in str_list2:
location = ord(i)-ord('A')
list2[location]+=1
print (list1,list2)
if list1 ==list2:
print("OK")
else:
print("NG")
a ="AABBZZ"
b ="AABBZZ"
count_words(a,b)
#注意以上算法(时间)复杂度分别为O(n^2),O(nlogn),O(n),第三种方法是用空间换时间。
#第二种算法主要花费的排序上,python是用的快排(O(nlog(n)))
05-19
1782
02-05
1308
10-10
4406
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交