假定输入的字符串只包含字母和*号,编写fun函数 只保留尾部的*
时间: 2023-12-06 16:00:36 浏览: 124
可以使用Python来编写这个函数。
```python
def fun(s):
if not s:
return ""
i = len(s) - 1
while i >= 0 and s[i] == '*':
i -= 1
return s[:i+1]
```
这个函数首先检查输入的字符串是否为空,如果是空字符串则直接返回空字符串。然后使用一个循环从字符串的末尾开始向前遍历,直到找到第一个不是*号的字符为止,然后返回这个字符之前的子字符串。这样就可以实现只保留字符串尾部的*号的功能。
例如,对于输入"abc***",函数返回"abc";对于输入"**",函数返回""。这个函数可以有效地处理输入字符串只包含字母和*号的情况,保留尾部的*号。
相关问题
2) 假定输入的字符串中只包含字母和*号。请编写函数 fun ,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不要删除,形参 n 给出字符串的长度,形参 h 给出了字符串中前导*号的个
针对这个问题,你可以编写一个Python函数`fun`来实现这个需求。下面是一个简单的例子:
```python
def fun(s, n, h):
# 检查输入是否合法,如果n小于等于0或者h大于n,则无需处理,直接返回原字符串
if n <= 0 or h > n:
return s
# 删除前导的*
start = min(h, n)
s = s[start:]
# 删除尾部多余的*
while s and s[0] == '*':
s = s[1:]
# 如果字符串开始就只有一个*,则保留它
if not s:
return '*'
# 返回处理后的字符串,中间的*号保持不变
return ''.join('*' if c == '*' else c for c in s)
# 示例
input_str = "****hello****"
length = len(input_str)
header_star_count = 4
result = fun(input_str, length, header_star_count)
print(result) # 输出:*hello**
```
这个函数首先检查输入的有效性,然后逐步去掉前导和尾部的*号。注意,在实际应用中,你需要处理字符串中有多个连续*号的情况。
c++假定输入的字符串s中只包含字母和*号。编写函数Fun,其功能是:除了尾部的*号之外,将字符串中其它*号全部删除。
在C++中,你可以通过遍历字符串并检查字符是否为'*'来实现这个`Fun`函数。当遇到非'*'字符时,将其添加到结果字符串中;如果遇到'*',则仅在不是字符串结尾的情况下跳过。下面是一个简单的实现示例:
```cpp
#include <string>
std::string Fun(const std::string &s) {
if (s.empty()) return s; // 如果字符串为空,则直接返回
std::string result;
bool isLastStar = false; // 标记当前字符是否为最后一个*
for (size_t i = 0; i < s.size(); ++i) {
char c = s[i];
if (c != '*') { // 非 '*' 字符直接追加到结果
result += c;
} else { // '*' 字符
if (i + 1 == s.size() || s[i + 1] != '*') { // 非尾部的 '*' 或者 '结束'
isLastStar = true;
break;
}
}
}
// 如果最后一个是'*'并且是尾部,我们不需要它
if (!isLastStar)
result.pop_back();
return result;
}
阅读全文
相关推荐














