首页 > 试题广场 >

字符串提取

[编程题]字符串提取
  • 热度指数:1665 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解
请从字符串中提取以最后一个[img]开头、以最后一个[\img]结尾的字符串,未找到匹配的字符串返回"null"

输入描述:
可能包含[img][\img]的字符串


输出描述:
截取后的字符串
示例1

输入

bbb[img]ccc[img]ddd[\img]eee[\img]

输出

[img]ddd[\img]eee[\img]
示例2

输入

abc

输出

null
将原字符串倒过来,然后就是查找第一个以‘]gmi\[’开头,并且是首个‘]gmi[’ 结尾的字符串。这里我是自己实现了 find的功能,大家看看就好。
def solve(s):
    new = s[::-1]
    i = 0
    stack = []
    while i<len(s) and not stack:
        if new[i]==']' and i+6<len(s) and new[i:i+6]==']gmi\[':
            i += 6
            while i<len(s):
                if new[i]==']' and i+5<len(s) and new[i:i+5]==']gmi[':
                    break
                stack.append(new[i])
                i += 1
        i += 1
    if i<len(s):
        return '[img]'+''.join(stack)[::-1]+'[\img]'
    return 'null'
if __name__=='__main__':
    s = raw_input().strip()
    print solve(s)


发表于 2019-09-11 09:36:34 回复(0)