中级农民
- 积分
- 135
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2012-7-23
- 最后登录
- 1970-1-1
|
- class Solution {
-
- static class Interval {
- int start;
- int end;
- }
-
- public static String handler(String s, String[] dict) {
-
- PriorityQueue<Interval> pq = new PriorityQueue<Interval>(new Comparator<Interval>() {
- public int compare(Interval a, Interval b) {
- return a.start - b.start;
- }
- });
-
- for (String word : dict) {
- int startIndex = 0;
- int index = 0;
- index = s.indexOf(word, startIndex);
- while (index != -1) {
- Interval interval = new Interval();
- interval.start = index;
- interval.end = index + word.length() - 1;
- pq.offer(interval);
- startIndex = index + word.length();
- index = s.indexOf(word, startIndex);
- }
- }
-
- if (pq.isEmpty()) {
- return s;
- }
-
- Interval interval = pq.poll();
- StringBuilder sb = new StringBuilder();
- int start = 0;
- while (!pq.isEmpty()) {
- Interval temp = pq.poll();
- if (temp.start <= interval.end+1) {
- interval.end = Math.max(interval.end, temp.end);
- }
- else {
- sb.append(s.substring(start, interval.start));
- sb.append("<b>");
- sb.append(s.substring(interval.start, interval.end+1));
- sb.append("</b>");
- sb.append(s.substring(interval.end+1, temp.start));
- start = interval.end + 1;
- interval = temp;
- }
- }
- sb.append("<b>");
- sb.append(s.substring(interval.start, interval.end+1));
- sb.append("</b>");
- sb.append(s.substring(interval.end+1, s.length()));
-
- return sb.toString();
- }
-
- public static void main(String[] args) {
- String s1 = "aaabbcc";
- String[] dict1 = {"aaa", "aab", "bc"};
- System.out.println(handler(s1, dict1));
- String s2 = "abcxyz123";
- String[] dict2 = {"abc", "123"};
- System.out.println(handler(s2, dict2));
- }
复制代码
写的很挫,没仔细改,但是workable |
|