LeetCode 616: Add Bold Tag in String

class Solution {
    class Interval {
        public int start;
        public int end;
        public Interval(int x, int y) {
            start = x;
            end = y;
        }
    }
    public String addBoldTag(String s, String[] dict) {
        List<Interval> intervals = new ArrayList<>();
        for (String str : dict) {
            int index = -1;
            index = s.indexOf(str, index);
            while (index != -1) {
                intervals.add(new Interval(index, index + str.length()));
                index +=1;
                index = s.indexOf(str, index);
            }
        }

        StringBuilder result = new StringBuilder();
        if (intervals.size() == 0) {
            return s;
        }
        Collections.sort(intervals, (i1, i2) -> i1.start - i2.start);
        Interval current = intervals.get(0);
        result.append(s.substring(0, current.start));
        result.append("<b>");
        for (int i = 1; i < intervals.size(); i++) {
            if (current.end >= intervals.get(i).start) {
                current.end = Math.max(intervals.get(i).end, current.end);
            } else {
                result.append(s.substring(current.start, current.end)).append("</b>");
                result.append(s.substring(current.end, intervals.get(i).start)).append("<b>");
                current = intervals.get(i);
            }
        }
        result.append(s.substring(current.start, current.end)).append("</b>");
        if (current.end < s.length()) {
            result.append(s.substring(current.end));
        }
        return result.toString();
    }
}

 

转载于:https://www.cnblogs.com/shuashuashua/p/7510245.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值