def split_by_last_index_and_max_length(string, char, max_length):
# 寻找给定字符的最后一个索引
idx = string.rfind(char)
# 如果指定的字符不在字符串中或字符串长度不足最大长度,则返回原字符串
if idx == -1 or len(string) <= max_length:
return [string]
else:
# 获取原字符串中给定字符后面的子串
sub_str = string[idx+1:]
if len(sub_str) >= max_length:
# 如果给定字符后子串的长度大于等于最大长度
# 则递归地对子串进行拆分,并将前半部分加入结果列表
prefix = split_by_last_index_and_max_length(sub_str, char, max_length)
return [string[:idx+1]+prefix[0]] + prefix[1:]
else:
# 如果子串的长度小于最大长度,则直接加入结果列表
return [string]
# 示例
string = "I love cats and dogs"
char = "a"
max_length = 7
result = split_by_last_index_and_max_length(string, char, max_length)
print(result)
# ["I love cats", "and dogs"]