python判断两个字符串是否为换位字符串
时间: 2023-04-28 18:02:46 浏览: 134
判断两个字符串是否为换位字符串,可以先判断两个字符串的长度是否相等,如果不相等则不可能是换位字符串。然后可以将两个字符串转换为列表,对列表进行排序,如果排序后的结果相同,则说明两个字符串是换位字符串。
相关问题
判断两个字符串是否为换位字符串
判断两个字符串是否为换位字符串的方法可以使用计数数组。首先,创建一个长度为256的计数数组bCount,初始化为0。然后,遍历第一个字符串,并将对应字符的计数值加1。接下来,遍历第二个字符串,并将对应字符的计数值减1。最后,遍历计数数组,如果数组中有任何一个元素不为0,则说明两个字符串不是换位字符串,返回False;否则,返回True。
以下是使用Python编写的代码示例:
```python
def compare(s1, s2):
result = True
bCount = [None] * 256
for i in range(256):
bCount[i] = 0
for i in range(len(s1)):
bCount[ord(list(s1)[i])-ord('0')] += 1
for i in range(len(s2)):
bCount[ord(list(s2)[i])-ord('0')] -= 1
for i in range(256):
if bCount[i] != 0:
result = False
break
return result
if __name__ == '__main__':
str1 = 'aaaabbc'
str2 = 'abcbaaa'
print(compare(str1, str2))
```
运行结果为True,说明两个字符串是换位字符串。
Python 对字符串由数字和 “*”星型字符两种字符无序构成的stra,,现在想把所有的星型字符挪到数组的左边,数字字符全部放到右边,数字字符之间的相互顺序不变。补充程序中所缺代码,完成上述功能。 【输入形式】 输入一个有数字和星号构成的字符串 【输出形式】 换位后的字符串 【样例输入】 12*23**567 【样例输出】 ***1223567
以下是代码实现:
```python
s = input() # 输入字符串
lst = list(s) # 将字符串转换为列表
left, right = 0, len(lst) - 1 # 定义左右指针
while left < right:
if lst[left] == '*': # 如果左指针指向的是星号
left += 1 # 左指针右移
elif lst[right] != '*': # 如果右指针指向的不是星号
right -= 1 # 右指针左移
else: # 如果左指针指向的是数字,右指针指向的是星号
lst[left], lst[right] = lst[right], lst[left] # 交换左右指针指向的字符
left += 1 # 左指针右移
right -= 1 # 右指针左移
print(''.join(lst)) # 将列表转换为字符串并输出
```
样例输入:
```
12*23**567
```
样例输出:
```
***1223567
```