用Python编写一个函数str_bin(str1, str2), str1、str2是两个有序字符串(其中字符按ASCII码从小到大排序),将str2合并到字符串str1中,要求合并后的字符串仍是有序的,允许字符重复。
时间: 2024-03-16 22:43:33 浏览: 31
好的,下面是一个实现该功能的Python函数str_bin(str1, str2):
```python
def str_bin(str1, str2):
"""
将有序字符串 str2 合并到 str1 中,返回合并后的有序字符串。
"""
i, j = 0, 0
res = ""
while i < len(str1) and j < len(str2):
if str1[i] <= str2[j]:
res += str1[i]
i += 1
else:
res += str2[j]
j += 1
res += str1[i:] + str2[j:]
return res
```
这个函数的思路是:维护两个指针 i 和 j,分别指向字符串 str1 和 str2 中当前要比较的字符。比较两个字符的大小,如果 str1[i] <= str2[j],就将 str1[i] 加入结果字符串 res 中,并将 i 指针后移;否则将 str2[j] 加入 res 中,并将 j 指针后移。循环直到其中一个字符串遍历完,然后将另一个字符串剩余的字符添加到 res 中即可。
这个函数的时间复杂度是 O(m+n),其中 m 和 n 分别是 str1 和 str2 的长度。
相关问题
2进制转str python
可以使用Python内置的函数bin()和chr()来实现2进制转字符串的功能。具体方法如下:
1.使用bin()函数将2进制转为整数,再使用chr()函数将整数转为对应的ASCII字符。示例代码如下:
binary = "01101000 01100101 01101100 01101100 01101111" # 2进制字符串
# 将2进制字符串转为整数列表,并逐个转为对应的ASCII字符
ascii_list = [chr(int(x, 2)) for x in binary.split()]
# 将ASCII字符列表转为字符串
result = ''.join(ascii_list)
print(result) # 输出结果为:hello
2.也可以使用正则表达式来将2进制字符串转为ASCII字符,示例代码如下:
import re
binary = "01101000 01100101 01101100 01101100 01101111" # 2进制字符串
# 使用正则表达式将2进制字符串中的空格删除,并将每8位的二进制数转为对应的ASCII字符
result = re.sub(r'\s', '', binary) # 删除空格
result = re.sub(r'([01]{8})', lambda m: chr(int(m.group(1), 2)), result) # 转为ASCII字符
print(result) # 输出结果为:hello
用python编写 给定一个a 数出a在二进制表示下1的个数
可以使用Python内置的bin()函数将整数转为二进制字符串,再遍历该字符串统计其中1的个数即可。具体代码如下:
```python
def count_ones(a):
# 将整数a转为二进制字符串
bin_str = bin(a)[2:]
# 遍历二进制字符串,统计其中1的个数
count = 0
for c in bin_str:
if c == '1':
count += 1
return count
```
使用示例:
```python
a = 23
print(count_ones(a)) # 输出:4
```
解释:23在二进制表示下为"10111",其中有4个1。