小明思考

          Just a software engineer
          posts - 124, comments - 36, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          問題給定一個字符串s,切割字符串使得每個子串都是回文的。(比如aba,對稱)
          要求返回所有可能的分割。

          比如,對于字符串s="aab",
          返回:

          [
             ["aa","b"],
             ["a","a","b"]
          ]


          分析:
          這個一個典型的可以用遞歸來解決問題,對于字符串s,先找出第一段回文字符串,然后遞歸的調(diào)用自己來切割余下的部分。

          private boolean isPalindrome(String s){
                  int len = s.length();
                  if(len>1){
                      for(int i=0;i<len/2;++i){
                          if(s.charAt(i)!=s.charAt(len-i-1)){
                              return false;
                          }
                      }
                  }
                  return true;
              }
              
              public ArrayList<ArrayList<String>> partition(String s) {
                  ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>>();
                  if(isPalindrome(s)){
                      ArrayList<String> as = new ArrayList<String>();
                      as.add(s);
                      result.add(as);
                  }
                  
                  int len= s.length();
                  for(int i=1;i<len;++i){
                      String ss = s.substring(0,i); //find the first part
                      if(isPalindrome(ss)){
                          ArrayList<ArrayList<String>> subResult = partition(s.substring(i)); //partition the remain part
                          for(ArrayList<String> as:subResult){
                              ArrayList<String> newas = new ArrayList<String>();
                              newas.add(ss);
                              newas.addAll(as);
                              result.add(newas);
                          }
                      }
                  }
                  
                  return result;
              }
          主站蜘蛛池模板: 衡水市| 清徐县| 三门县| 南部县| 旌德县| 拜城县| 新丰县| 麦盖提县| 安仁县| 惠水县| 星座| 阿合奇县| 封开县| 当阳市| 灵宝市| 南溪县| 盐津县| 黔南| 邯郸市| 南京市| 辽宁省| 绥中县| 杂多县| 城口县| 滕州市| 东丽区| 聂荣县| 广丰县| 柏乡县| 台山市| 巩留县| 凤山县| 阳泉市| 吉安县| 保定市| 金山区| 安福县| 巨野县| 吴川市| 香格里拉县| 友谊县|