Longest Common Prefix

来源:互联网 发布:yy官方协议软件 编辑:程序博客网 时间:2024/05/02 00:24

Write a function to find the longest common prefix string amongst an array of strings.

一个一个比较的方式太trivial,所以简单的用前缀树写了写。

class Node{char val;Map<Integer, Node> childs;public Node(){val = 0;childs = new HashMap<Integer, Node>();}public Node(char v){val = v;childs = new HashMap<Integer, Node>();}public void addChild(String child){if (child == null) {return;}if (child.length() == 0) {childs.put(256, null);return;}char c = child.charAt(0);if (childs.containsKey((int)c)) {Node childNode = childs.get((int)c);childNode.addChild(child.substring(1));}else{Node childNode = new Node(c);childs.put((int) c, childNode);childNode.addChild(child.substring(1));}}};public class Solution {public String longestCommonPrefix(String[] strs) {        StringBuilder sb = new StringBuilder();        Node root = new Node();        for (String str : strs) {root.addChild(str);}        if (root.childs.size() != 1) {return sb.toString();}        Node cur = (Node) (root.childs.values().toArray())[0];        while (cur != null) {sb.append(cur.val);if (cur.childs.size() != 1) {break;}cur = (Node) (cur.childs.values().toArray())[0];}        return sb.toString();    }};



0 0