2017-04-19 10 views
0

頂点を作成してDirected Graphで使用するときに問題があります。DirectedGraphのStringからVertexへの変換が行われる

私はと心配される2つのクラスがあります。Node.javaとDigraph.java

public class Node { 
    private final int vertex; 
    private HashSet<Node> outgoingEdges; 

    public Node(int index) { 
    this.index = index; 
    } 

    protected void addOutgoing(Node start) { 
    outgoingEdges.add(start); 
} 

public class Digraph { 
private Set<Node> vertices; 

public Digraph(String str) { 
String eliminatePrefix = str.replaceAll("a", ""); 
for (int i = 0; i < eliminatePrefix.length; i++) { 
    // Not sure how to proceed 
    // 
} 

protected void add(Node a, Node b) { 
    a.addOutgoing(b); 
} 

に渡される文字列は、[A1、A2] [A16、A10]のようになります.... をa1とa2は頂点です。ペアリングとは、a1からa2への誘導ルートです。文字列を解析して変換する必要があります。正しくフォーマットされると、addEdgeメソッドが呼び出されます。私はこのコンストラクタを理解しようとしています。

答えて

0
たぶん

ないそれを行うにはクリーンな方法が、それは

 String s = "[a1, a2][a3, a4][a5, a6]"; 

    s = s.replaceAll("[a\\s\\[]", ""); // remove " " "[" and "," 
    String[] edges = s.split("]"); // split the string into substrings on ] 

    for (String edge : edges) { 
     String[] points = edge.split(","); 
     int[] p = new int[2]; 
     p[0] = Integer.parseInt(points[0]); 
     p[1] = Integer.parseInt(points[1]); 

     // Construct your edge here 
     System.out.println("Edge from: " + p[0] + " to " + p[1]); 
    } 
の作品
関連する問題