码迷,mamicode.com
首页 > 其他好文 > 详细

find all palidrome string by deleting any letter from the given string

时间:2017-12-03 11:45:01      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:return   find   tin   区分   null   string   重复   基本   i++   

我就想了个递归, 还是没有区分掉一些重复的情况,worst case O(2^n)基本同暴力解
Map<Integer, Set<String>> allSubSet = new HashMap();
Set<String> getAllPalidrome(String s, int x, int y){
  int ind = x * s.length() + y;
  if(allSubSet.constainsKey(ind)) return allSubSet.get(ind);
  Set<String> ret = new HashSet();
  if (s == null || s.size() == 0) { ret.add(""); return ret;}
  if (s.size() == 1) { ret.add(s); return ret;}
  for(int i = x; i <= y; i++){
    for (int j = y; j >= i; j--){
      if (s.charAt(i) == s.charAt(j)){
         Set<String> subSet = getAllPalidrome(s, i + 1, j - 1);
         ret.addAll(subSet);
         for (String str : subSet) ret.add(s.charAt(i) + str + s.charAt(i));
      }
    }
  }
  allSubSet.put(ind, ret);
  return ret;
}

  

find all palidrome string by deleting any letter from the given string

标签:return   find   tin   区分   null   string   重复   基本   i++   

原文地址:http://www.cnblogs.com/apanda009/p/7965312.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!