如果一个字符串是另一个字符串的重新排列组合,那么这两个字符串互为变位词。
比如,"heart" 与 "earth" 互为变位词,"Mary" 与 "arMy" 也互为变位词。“Hello world"与“worldHello"不是变位词。
输入格式:
第一行输入第一个字符串;
第二行输入第二个字符串。
输出格式:
若是变位词,输出:yes;否则,输出:no。
输入样例1:
Mary
arMy
输出样例1:
yes
输入样例2:
hello world
world hello
输出样例2:
yes
输入样例3:
I am very good.
verygood I am.
输出样例3:
no
我的答案:
方法一:
遍历
string1 = input()
string2 = input()
for i in string1:
if (i not in string2):
print("no")
break
else:
print("yes")
方法二:
使用 set
和 len
string1 = input()
string2 = input()
# 去除空格并转换为小写
string1 = string1.replace(' ', '').lower()
string2 = string2.replace(' ', '').lower()
# 判断长度是否相等
if len(string1) != len(string2):
print("no")
else:
# 使用 set 统计字符出现次数
if set(string1) == set(string2):
print("yes")
else:
print("no")
方法三:
使用排序
string1 = input()
string2 = input()
# 去除空格并转换为小写
string1 = string1.replace(' ', '').lower()
string2 = string2.replace(' ', '').lower()
# 判断长度是否相等
if len(string1) != len(string2):
print("no")
else:
# 对字符串排序
sorted_string1 = sorted(string1)
sorted_string2 = sorted(string2)
# 比较排序后的字符串
if sorted_string1 == sorted_string2:
print("yes")
else:
print("no")
-
输入字符串:
string1 = input()
获取第一个字符串。string2 = input()
获取第二个字符串。
-
预处理字符串:
string1 = string1.replace(' ', '').lower()
去除第一个字符串中的空格并将其转换为小写字母。string2 = string2.replace(' ', '').lower()
去除第二个字符串中的空格并将其转换为小写字母。
-
判断长度:
if len(string1) != len(string2):
检查两个字符串的长度是否相等。如果不相等,则直接输出 "no" 并结束程序。
-
排序字符串:
sorted_string1 = sorted(string1)
对第一个字符串进行排序,并将排序后的结果存储在sorted_string1
中。sorted_string2 = sorted(string2)
对第二个字符串进行排序,并将排序后的结果存储在sorted_string2
中。
-
比较排序结果:
if sorted_string1 == sorted_string2:
检查两个排序后的字符串是否相等。如果相等,则输出 "yes",表示两个字符串是变位词;否则,输出 "no"。
方法四:
使用字典
string1 = input()
string2 = input()
# 去除空格并转换为小写
string1 = string1.replace(' ', '').lower()
string2 = string2.replace(' ', '').lower()
# 判断长度是否相等
if len(string1) != len(string2):
print("no")
else:
# 使用字典统计字符出现次数
char_count = {}
for char in string1:
if char in char_count:
char_count[char] += 1
else:
char_count[char] = 1
for char in string2:
if char in char_count:
char_count[char] -= 1
else:
char_count[char] = -1
# 判断字典中所有值是否都为 0
if all(value == 0 for value in char_count.values()):
print("yes")
else:
print("no")
- 输入字符串: 与之前代码相同。
- 预处理字符串: 与之前代码相同。
- 判断长度: 与之前代码相同。
- 使用字典统计字符出现次数:
- 创建一个空的字典
char_count
,用于存储每个字符出现的次数。 - 遍历第一个字符串,如果字符已经存在于字典中,则将对应的计数增加 1;否则,将字符添加到字典中,并将其计数设置为 1。
- 遍历第二个字符串,如果字符已经存在于字典中,则将对应的计数减少 1;否则,将字符添加到字典中,并将其计数设置为 -1。
- 创建一个空的字典
- 判断字典中所有值是否都为 0:
- 使用
all(value == 0 for value in char_count.values())
判断字典中所有值是否都为 0。如果都为 0,则输出 "yes",表示两个字符串是变位词;否则,输出 "no"。
- 使用
方法五:
使用 collections.Counter
from collections import Counter
string1 = input()
string2 = input()
# 去除空格并转换为小写
string1 = string1.replace(' ', '').lower()
string2 = string2.replace(' ', '').lower()
# 使用 Counter 统计字符出现次数
counter1 = Counter(string1)
counter2 = Counter(string2)
# 判断字符出现次数是否相同
if counter1 == counter2:
print("yes")
else:
print("no")
- 输入字符串: 与之前代码相同。
- 预处理字符串: 与之前代码相同。
- 使用
Counter
统计字符出现次数:counter1 = Counter(string1)
使用Counter
类统计第一个字符串中每个字符出现的次数。counter2 = Counter(string2)
使用Counter
类统计第二个字符串中每个字符出现的次数。
- 判断字符出现次数是否相同:
if counter1 == counter2:
使用==
比较两个Counter
对象,如果它们包含的字符及其出现次数都相同,则输出 "yes",表示两个字符串是变位词;否则,输出 "no"。
方法六:
使用 collections.Counter
的 subtract
方法
from collections import Counter
string1 = input()
string2 = input()
# 去除空格并转换为小写
string1 = string1.replace(' ', '').lower()
string2 = string2.replace(' ', '').lower()
# 使用 Counter 统计字符出现次数
counter1 = Counter(string1)
counter2 = Counter(string2)
# 使用 subtract 方法判断字符出现次数是否相同
counter1.subtract(counter2)
if all(count == 0 for count in counter1.values()):
print("yes")
else:
print("no")
- 输入字符串: 与之前代码相同。
- 预处理字符串: 与之前代码相同。
- 使用
Counter
统计字符出现次数: 与之前代码相同。 - 使用
subtract
方法判断字符出现次数是否相同:counter1.subtract(counter2)
使用subtract
方法将counter2
中的字符出现次数从counter1
中减去。if all(count == 0 for count in counter1.values()):
判断counter1
中所有字符的计数是否都为 0。如果都为 0,则输出 "yes",表示两个字符串是变位词;否则,输出 "no"。