从键盘输入两个字符串。第一个字符串命名为m_str,第二个字符串命名为f_str。在f_str的中间(非首字符、非末字符)包含一个‘*’,该字符常作为通配符,即代表一个或多个字符。现请编写程序,查找m_str中是否包含f_str,若包含则输出找到的所有子串。
时间: 2023-05-29 12:07:24 浏览: 132
以下是Python的实现代码:
```python
m_str = input("请输入第一个字符串:")
f_str = input("请输入第二个字符串:")
if '*' not in f_str:
if f_str in m_str:
print("找到子串:", f_str)
else:
print("未找到子串")
else:
f_parts = f_str.split('*')
if len(f_parts) != 2:
print("通配符位置不正确")
else:
f_prefix, f_suffix = f_parts[0], f_parts[1]
if f_prefix in m_str and f_suffix in m_str:
start_index = m_str.find(f_prefix) + len(f_prefix)
end_index = m_str.rfind(f_suffix)
if start_index <= end_index:
substrings = m_str[start_index:end_index].split(f_prefix)
for substring in substrings:
if f_suffix in substring:
print("找到子串:", f_prefix + substring + f_suffix)
else:
print("未找到子串")
else:
print("未找到子串")
```
该代码首先判断f_str是否包含通配符,如果不包含,则直接在m_str中查找是否包含f_str即可。如果包含通配符,则需要将f_str拆分成前缀和后缀,然后在m_str中查找前缀和后缀的位置,最终找到所有符合条件的子串。注意,如果通配符位置不正确或者前缀和后缀在m_str中不存在,则需要输出未找到子串的提示。
阅读全文