首页 > 试题广场 >

字符串提取

[编程题]字符串提取
  • 热度指数:148 时间限制: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
import java.util.Scanner;

/**
 * 请从字符串中提取以最后一个[img]开头、以最后一个[\img]结尾的字符串,
 * 未找到匹配的字符串返回"null"
 * 输入描述:
 * 可能包含[img][\img]的字符串
 * 输出描述:
 * 截取后的字符串
 * 输入例子1:
 * bbb[img]ccc[img]ddd[\img]eee[\img]
 * 输出例子1:
 * [img]ddd[\img]eee[\img]
 */
public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(findImageStr(str));

    }


    public static String findImageStr(String str) {
        if (str == null) {
            return "null";
        }
        int start = str.lastIndexOf("[img]");
        int end = str.lastIndexOf("[\\img]");

        if (start > -1 && end > -1 && start < end) {
            return str.substring(start, end+6);
        } else {
            return "null";
        }
    }
}
发表于 2018-07-08 19:08:07 回复(0)
a = input()
startTag, endTag = "[img]","[\img]"
result = "null"
reverse_a = a[::-1]
for i in range(len(a)-6):
    if reverse_a[i:i+6] == endTag[::-1]:
        for j in range(i+6,len(a)-5):
            if reverse_a[j:j+5] == startTag[::-1]:
                result = reverse_a[i:j+5][::-1]
                break
        break
print(result)

发表于 2021-04-12 18:02:04 回复(0)
import java.util.*;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        int i = s.lastIndexOf("[img]");
        int j = s.lastIndexOf("[\\img]");
        if (i == -1 || j == -1 || i > j) {
            System.out.println("null");
        } else {
            String res = s.substring(i, j + 6);
            System.out.println(res);
        }
    }
}

发表于 2019-09-07 20:39:59 回复(0)
import re
s=input()
res='null'
for i in range(len(s),6,-1):
    if s[i-6:i]=='[\img]':
        for j in range(i-6,5,-1):
            if s[j-5:j]=='[img]':
                res=s[j-5:i]
                break
        break
print(res)

发表于 2019-09-07 16:39:21 回复(0)