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();
    }
}

 

posted on 2017-09-12 15:06  keepshuatishuati  阅读(130)  评论(0编辑  收藏  举报