IT技術(shù)小屋

          秋風(fēng)秋雨,皆入我心

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            38 隨筆 :: 1 文章 :: 19 評論 :: 0 Trackbacks

          3個字符串a(chǎn),b,c。判斷c是否是a和b的interleave,也就是c中應(yīng)該有a,b中所有字 符,并且c中字符順序和a,b中一樣。比如,
          1. a = "ef" b = "gh" c = "egfh" return true
          2. a = "ef" b = "gh" c = "ehgf" return false

          分析:
          這個題目中,并沒有說明a和b中是否有相同的字符,這個直接影響了最終的解法。所以,大家在面試的過程中,要和面試官進行交互,弄清楚之后再動手。a和b中不含有相同字符的情況很簡單,這里略去。下面給出a和b中包含相同字符的動態(tài)規(guī)劃的解法。

           1 public class Solution {
           2     public boolean isInterleaved(String a, String b, String c) {
           3         int lengthA = a.length();
           4         int lengthB = b.length();
           5         int lengthC = c.length();
           6         if (lengthA + lengthB != lengthC)
           7             return false;
           8         boolean[][] map = new boolean[lengthB + 1][lengthA + 1];
           9         map[0][0] = true;
          10         for (int m = 1; m < lengthA; m++) {
          11             map[0][m] = (a.charAt(m - 1) == c.charAt(m - 1) && map[0][m - 1]);
          12         }
          13         for (int n = 1; n < lengthB; n++) {
          14             map[n][0] = (b.charAt(n - 1) == c.charAt(n - 1) && map[n - 1][0]);
          15         }
          16         for (int i = 1; i <= lengthB; i++) {
          17             for (int j = 1; j <= lengthA; j++) {
          18                 map[i][j] = (c.charAt(i + j - 1) == b.charAt(i - 1) && map[i - 1][j])
          19                         || (c.charAt(i + j - 1) == a.charAt(j - 1) && map[i][j - 1]);
          20             }
          21         }
          22         return map[lengthB][lengthA];
          23     }
          24 }


          posted on 2013-12-28 14:29 Meng Lee 閱讀(168) 評論(0)  編輯  收藏 所屬分類: 待字閨中
          主站蜘蛛池模板: 手游| 庆阳市| 富锦市| 纳雍县| 桂东县| 嘉禾县| 长阳| 庄河市| 化州市| 嘉峪关市| 扶余县| 闸北区| 新余市| 黄梅县| 连江县| 南充市| 中江县| 剑阁县| 平昌县| 乌鲁木齐县| 营山县| 灵川县| 永嘉县| 尚义县| 文昌市| 临邑县| 玉树县| 邹平县| 丰宁| 蓬莱市| 威信县| 来安县| 普兰县| 林西县| 紫阳县| 临安市| 贵港市| 德昌县| 句容市| 富锦市| 兖州市|