编写python程序,输人一个字符串(只包含字母和* 号),删除该字符串中除了尾部以外的所有*号。例如,输人的字符串为"*** SSFG** fgeD***",删除后的字符申应"SSFGfgeD***"
时间: 2023-07-23 07:16:31 浏览: 216
好的,以下是Python程序实现:
```python
s = input("请输入一个字符串:")
s = s.rstrip('*') + s[len(s.rstrip('*')):].replace('*', '')
print("删除后的字符串为:", s)
```
运行程序后,输入示例字符串`*** SSFG** fgeD***`,输出结果为`删除后的字符串为: SSFGfgeD***`。
程序的实现思路是先使用`rstrip()`方法删除尾部的所有`*`号,然后使用字符串切片和`replace()`方法将除了尾部以外的所有`*`号删除,并将结果重新赋值给`s`。最后输出删除后的字符串。
相关问题
编写程序,输入一个字符串(只包含字母和*号),删除该字符串中除了尾部以外的所有*号。例如,输入的字符串为"***1 SSFG **f geD ***",删除后的字符串应为"SSFGfgeD*** "。
```python
def fun(s):
# 删除前导*号
while s[0] == '*':
s = s[1:]
# 删除中间的*号
for i in range(1, len(s)-1):
if s[i] == '*' and s[i-1] == '*' and s[i+1] == '*':
s = s[:i] + s[i+1:]
# 删除尾部*号
while s[-1] == '*':
s = s[:-1]
return s
s = '***1 SSFG **f geD ***'
s = fun(s)
print(s) # 输出:SSFGfgeD***
```
假定输入的字符串中只包含字母和*号。编写程序,要求除了字符串前导和尾部的*号之外,将串中其他*号全部删除。例如,若字符串中的内容为****A*BC*DEF*G******,删除后,字符串中的内容应当是****ABCDEFG******。
可以使用双指针法,一个指针从头开始扫描字符串,另一个指针从尾开始扫描字符串。首先,我们将头指针指向第一个不是*号的位置,尾指针指向第一个不是*号的位置。然后,分别从头指针和尾指针开始向中间移动,如果头指针指向的字符是*号,那么我们就将尾指针指向的字符复制到头指针指向的位置,并将尾指针向左移动一位;如果尾指针指向的字符是*号,那么我们就将头指针指向的字符复制到尾指针指向的位置,并将头指针向右移动一位。直到头指针和尾指针相遇为止。
以下是具体的实现过程:
```python
def remove_stars(s):
# 找到头指针和尾指针
i, j = 0, len(s) - 1
while i < len(s) and s[i] == '*':
i += 1
while j >= 0 and s[j] == '*':
j -= 1
# 双指针移动
while i < j:
if s[i] == '*':
s[i] = s[j]
j -= 1
elif s[j] == '*':
s[j] = s[i]
i += 1
else:
i += 1
j -= 1
return ''.join(s)
s = '****A*BC*DEF*G******'
print(remove_stars(list(s))) # 输出:****ABCDEFG******
```
时间复杂度为 $O(n)$,其中 $n$ 是字符串的长度。
阅读全文