由构造回文字串的算法问题引发思考 | 指尖的舞客



由构造回文字串的算法问题引发思考 | 指尖的舞客

参考代码: /** * 最大公共子序列的应用 * @author hyw * */ public class ConstructPalidrome { private static String LCS(String s1, String s2){ if(s1 == null || s2 == null) return null; int len1 = s1.length(); int len2 = s2.length(); int[][] f = new int[len1+1][len2+1]; for(int i=len1-1; i>=0; i--) for(int j=len2-1; j>=0; j--){ if(s1.charAt(i) == s2.charAt(j)){ f[i][j] = f[i+1][j+1] + 1; }else{ f[i][j] = Math.max(f[i+1][j], f[i][j+1]); } } int i=0, j=0; StringBuilder sb = new StringBuilder(); while(i f[i][j+1]){ i++; }else{ j++; } } return sb.toString(); } public static boolean isPalin(String str){ if(str == null || str.length() < 3) return true; String strReverse = new StringBuilder(str).reverse().toString(); String sub = LCS(str, strReverse); return Math.abs(str.length() - sub.length()) <= 1; } public static void main(String[] args){ String str = "testset"; if(isPalin(str)){ System.out.

Read full article from 由构造回文字串的算法问题引发思考 | 指尖的舞客


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts