top of page

Levenshtein Solution 5 source code

 

public class solution {

    

    private static List<List<Integer>> matrix_;

 

    /**

     * @param args the command line arguments

     */

    public static void main(String[] args) {

                

        if (args.length != 2) {

            return;

        }

        

        calculateDistance(args[0], args[1]);

        

        printMatrix(args[0], args[1]);

    }

    

    private static void calculateDistance(String word1, String word2) {

        

        initializeMatrix(word2.length(), word1.length());

        

        for (int i2 = 1; i2 <= word2.length(); i2++) {

            List<Integer> singleRow = matrix_.get(i2);

            for (int i1 = 1; i1 <= word1.length(); i1++) {

                if ( (word1.charAt(i1 - 1)) == (word2.charAt(i2 - 1)) ) {

                    if (checkIfLeftAboveIsMiniumFor(i2, i1)) {

                        singleRow.add(getMinimumFor(i2, i1));                       

                    } else {

                        singleRow.add(getMinimumFor(i2, i1) + 1);                        

                    }                                        

                } else {    

                    singleRow.add(getMinimumFor(i2, i1) + 1);                    

                }             

            }  

        }        

    }

    

    private static List<Integer> getListForMinimumFor(int i, int j) {

        

        List<Integer> myList = new ArrayList<>();

        

        myList.add(matrix_.get(i - 1).get(j - 1));

        myList.add(matrix_.get(i).get(j - 1));

        myList.add(matrix_.get(i - 1).get(j));

                  

        return myList;    

    }

    

    private static int getMinimumFor(int i, int j) {

        

        List<Integer> myList = getListForMinimumFor(i, j);

        

        return Collections.min(myList);    

    }

    

    private static boolean checkIfLeftAboveIsMiniumFor(int i, int j) {

        

        List<Integer> myList = getListForMinimumFor(i, j);

        

        return myList.indexOf(Collections.min(myList)) == 0;    

    }

    

    private static void printMatrix(String word1, String word2) {

        

        

        for (int i = 0; i < matrix_.size(); i++) {

            String line = "";

            

            if (i > 0 && i <= word2.length()) {

                line = String.valueOf(word2.charAt(i - 1)) + " ";                

            } else {

                line = "  ";

            }

            

            for (int j = 0; j < matrix_.get(i).size(); j++) {

                if (i == 0 && j == 0) {

                    System.out.print("    ");                        

                }

                if (i == 0 && j > 0 && j <= word1.length()) {                    

                    System.out.print(word1.charAt(j - 1) + " ");                     

                    if (i == 0 && j == matrix_.get(i).size() - 1) {

                        System.out.println("");

                    }

                }

                

                line += String.valueOf(matrix_.get(i).get(j)) + " ";                    

                

            }            

            System.out.println(line);

        }        

    }

    

    private static void initializeMatrix(int m, int n) {

        

        matrix_ = new ArrayList<>();

        

        matrix_.add(new ArrayList<Integer>());

        

        for (int j = 0; j <= n; j++) {

            matrix_.get(0).add(j);            

        }

        

        matrix_.add(new ArrayList<Integer>());

        

        for (int i = 1; i <= m; i++) {

            matrix_.get(i).add(i);                        

            matrix_.add(new ArrayList<Integer>());             

        }

    }

    

}

 

Annotation in text format

 

File Name >> solution10.java

File Creation data >> 1425000729024

Java Classes --> solution

Method Name --> main

Method return type --> void

Method Name --> calculateDistance

Method return type --> void

Method Name --> getListForMinimumFor

Method return type --> java.util.List

Method Name --> getMinimumFor

Method return type --> int

Method Name --> checkIfLeftAboveIsMiniumFor

Method return type --> boolean

Method Name --> printMatrix

Method return type --> void

Method Name --> initializeMatrix

Method return type --> void

Field Name --> matrix_

Field type --> java.util.List

Is Field Array --> false

matrix_Fieldis STATIC

matrix_ modifier --> private

matrix_ modifier --> static

 

Annotation in RDF format

 

<rdf:RDF

    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

    xmlns:SEO="http://www.seontology.org/activeseo/seo/v1#"

    xmlns:DC="http://purl.org/dc/dcmitype/"

    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"

    xmlns:foaf="http://xmlns.com/foaf/0.1/">

  <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/calculateDistance/Parameter_2">

    <SEO:isParamArray>false</SEO:isParamArray>

    <SEO:paramType>java.lang.String</SEO:paramType>

    <SEO:paramName>word2</SEO:paramName>

    <SEO:paramSeq>2</SEO:paramSeq>

    <foaf:name>word2</foaf:name>

    <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#PARAMETER"/>

  </DC:Software>

  <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/calculateDistance/Parameter_1">

    <SEO:isParamArray>false</SEO:isParamArray>

    <SEO:paramType>java.lang.String</SEO:paramType>

    <SEO:paramName>word1</SEO:paramName>

    <SEO:paramSeq>1</SEO:paramSeq>

    <foaf:name>word1</foaf:name>

    <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#PARAMETER"/>

  </DC:Software>

  <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/initializeMatrix">

    <SEO:methodDeclarationSignature>void initializeMatrix(int m, int n)</SEO:methodDeclarationSignature>

    <SEO:isReturnPrimitive>true</SEO:isReturnPrimitive>

    <SEO:methodName>initializeMatrix</SEO:methodName>

    <SEO:methodHasParam>

      <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/initializeMatrix/Parameter_1">

        <SEO:isParamArray>false</SEO:isParamArray>

        <SEO:paramType>int</SEO:paramType>

        <SEO:paramName>m</SEO:paramName>

        <SEO:paramSeq>1</SEO:paramSeq>

        <foaf:name>m</foaf:name>

        <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#PARAMETER"/>

      </DC:Software>

    </SEO:methodHasParam>

    <SEO:methodCallSignature>initializeMatrix(m, n)</SEO:methodCallSignature>

    <SEO:hasStaticModifier>true</SEO:hasStaticModifier>

    <SEO:returnType>void</SEO:returnType>

    <SEO:hasAccessModifier rdf:resource="http://www.seontology.org/activeseo/seo/v1#Private"/>

    <SEO:methodHasParam>

      <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/initializeMatrix/Parameter_2">

        <SEO:isParamArray>false</SEO:isParamArray>

        <SEO:paramType>int</SEO:paramType>

        <SEO:paramName>n</SEO:paramName>

        <SEO:paramSeq>2</SEO:paramSeq>

        <foaf:name>n</foaf:name>

        <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#PARAMETER"/>

      </DC:Software>

    </SEO:methodHasParam>

    <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#METHOD"/>

    <foaf:name>initializeMatrix</foaf:name>

  </DC:Software>

  <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/getListForMinimumFor">

    <foaf:name>getListForMinimumFor</foaf:name>

    <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#METHOD"/>

    <SEO:methodHasParam>

      <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/getListForMinimumFor/Parameter_2">

        <SEO:isParamArray>false</SEO:isParamArray>

        <SEO:paramType>int</SEO:paramType>

        <SEO:paramName>j</SEO:paramName>

        <SEO:paramSeq>2</SEO:paramSeq>

        <foaf:name>j</foaf:name>

        <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#PARAMETER"/>

      </DC:Software>

    </SEO:methodHasParam>

    <SEO:methodCallSignature>getListForMinimumFor(i, j)</SEO:methodCallSignature>

    <SEO:hasAccessModifier rdf:resource="http://www.seontology.org/activeseo/seo/v1#Private"/>

    <SEO:hasStaticModifier>true</SEO:hasStaticModifier>

    <SEO:methodName>getListForMinimumFor</SEO:methodName>

    <SEO:returnType>java.util.List</SEO:returnType>

    <SEO:methodDeclarationSignature>java.util.List getListForMinimumFor(int i, int j)</SEO:methodDeclarationSignature>

    <SEO:methodHasParam>

      <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/getListForMinimumFor/Parameter_1">

        <SEO:isParamArray>false</SEO:isParamArray>

        <SEO:paramType>int</SEO:paramType>

        <SEO:paramName>i</SEO:paramName>

        <SEO:paramSeq>1</SEO:paramSeq>

        <foaf:name>i</foaf:name>

        <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#PARAMETER"/>

      </DC:Software>

    </SEO:methodHasParam>

  </DC:Software>

  <SEO:CLASS rdf:about="http://www.seontology.org/activeseo/seoanno/data/solution">

    <SEO:hasField>

      <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/matrix_">

        <SEO:fieldName>matrix_</SEO:fieldName>

        <SEO:isFieldArray>false</SEO:isFieldArray>

        <rdfs:comment>private static java.util.List matrix_</rdfs:comment>

        <foaf:name>matrix_</foaf:name>

        <SEO:hasParentClass>solution</SEO:hasParentClass>

        <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#FIELD"/>

        <SEO:hasStaticModifier>true</SEO:hasStaticModifier>

        <SEO:fieldType>java.util.List</SEO:fieldType>

        <SEO:hasAccessModifier rdf:resource="http://www.seontology.org/activeseo/seo/v1#Private"/>

      </DC:Software>

    </SEO:hasField>

    <SEO:hasMethod>

      <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/calculateDistance">

        <SEO:methodCallSignature>calculateDistance(word1, word2)</SEO:methodCallSignature>

        <SEO:isReturnPrimitive>true</SEO:isReturnPrimitive>

        <SEO:returnType>void</SEO:returnType>

        <SEO:hasAccessModifier rdf:resource="http://www.seontology.org/activeseo/seo/v1#Private"/>

        <SEO:methodName>calculateDistance</SEO:methodName>

        <SEO:methodDeclarationSignature>void calculateDistance(java.lang.String word1, java.lang.String word2)</SEO:methodDeclarationSignature>

        <foaf:name>calculateDistance</foaf:name>

        <SEO:hasStaticModifier>true</SEO:hasStaticModifier>

        <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#METHOD"/>

        <SEO:methodHasParam rdf:resource="http://www.seontology.org/activeseo/seoanno/data/calculateDistance/Parameter_1"/>

        <SEO:methodHasParam rdf:resource="http://www.seontology.org/activeseo/seoanno/data/calculateDistance/Parameter_2"/>

      </DC:Software>

    </SEO:hasMethod>

    <SEO:hasMethod>

      <SEO:METHOD rdf:about="http://www.seontology.org/activeseo/seoanno/data/checkIfLeftAboveIsMiniumFor">

        <SEO:methodHasParam>

          <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/checkIfLeftAboveIsMiniumFor/Parameter_2">

            <SEO:isParamArray>false</SEO:isParamArray>

            <SEO:paramType>int</SEO:paramType>

            <SEO:paramName>j</SEO:paramName>

            <SEO:paramSeq>2</SEO:paramSeq>

            <foaf:name>j</foaf:name>

            <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#PARAMETER"/>

          </DC:Software>

        </SEO:methodHasParam>

        <SEO:hasAccessModifier rdf:resource="http://www.seontology.org/activeseo/seo/v1#Private"/>

        <SEO:methodHasParam>

          <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/checkIfLeftAboveIsMiniumFor/Parameter_1">

            <SEO:isParamArray>false</SEO:isParamArray>

            <SEO:paramType>int</SEO:paramType>

            <SEO:paramName>i</SEO:paramName>

            <SEO:paramSeq>1</SEO:paramSeq>

            <foaf:name>i</foaf:name>

            <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#PARAMETER"/>

          </DC:Software>

        </SEO:methodHasParam>

        <foaf:name>checkIfLeftAboveIsMiniumFor</foaf:name>

        <rdf:type rdf:resource="http://purl.org/dc/dcmitype/Software"/>

        <SEO:methodCallSignature>checkIfLeftAboveIsMiniumFor(i, j)</SEO:methodCallSignature>

        <SEO:methodDeclarationSignature>boolean checkIfLeftAboveIsMiniumFor(int i, int j)</SEO:methodDeclarationSignature>

        <SEO:hasStaticModifier>true</SEO:hasStaticModifier>

        <SEO:isReturnPrimitive>true</SEO:isReturnPrimitive>

        <SEO:returnType>boolean</SEO:returnType>

        <SEO:methodName>checkIfLeftAboveIsMiniumFor</SEO:methodName>

      </SEO:METHOD>

    </SEO:hasMethod>

    <SEO:hasMethod>

      <SEO:METHOD rdf:about="http://www.seontology.org/activeseo/seoanno/data/main">

        <SEO:methodHasParam>

          <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/main/Parameter_1">

            <SEO:isParamArray>true</SEO:isParamArray>

            <SEO:paramType>java.lang.String</SEO:paramType>

            <SEO:paramName>args</SEO:paramName>

            <SEO:paramSeq>1</SEO:paramSeq>

            <foaf:name>args</foaf:name>

            <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#PARAMETER"/>

          </DC:Software>

        </SEO:methodHasParam>

        <SEO:hasStaticModifier>true</SEO:hasStaticModifier>

        <SEO:hasAccessModifier rdf:resource="http://www.seontology.org/activeseo/seo/v1#Public"/>

        <foaf:name>main</foaf:name>

        <SEO:methodDeclarationSignature>void main(java.lang.String[] args)</SEO:methodDeclarationSignature>

        <rdf:type rdf:resource="http://purl.org/dc/dcmitype/Software"/>

        <SEO:returnType>void</SEO:returnType>

        <SEO:methodName>main</SEO:methodName>

        <SEO:isReturnPrimitive>true</SEO:isReturnPrimitive>

        <SEO:methodCallSignature>main(args)</SEO:methodCallSignature>

      </SEO:METHOD>

    </SEO:hasMethod>

    <SEO:hasMethod>

      <SEO:METHOD rdf:about="http://www.seontology.org/activeseo/seoanno/data/getMinimumFor">

        <SEO:hasAccessModifier rdf:resource="http://www.seontology.org/activeseo/seo/v1#Private"/>

        <SEO:methodDeclarationSignature>int getMinimumFor(int i, int j)</SEO:methodDeclarationSignature>

        <SEO:methodHasParam>

          <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/getMinimumFor/Parameter_1">

            <SEO:isParamArray>false</SEO:isParamArray>

            <SEO:paramType>int</SEO:paramType>

            <SEO:paramName>i</SEO:paramName>

            <SEO:paramSeq>1</SEO:paramSeq>

            <foaf:name>i</foaf:name>

            <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#PARAMETER"/>

          </DC:Software>

        </SEO:methodHasParam>

        <rdf:type rdf:resource="http://purl.org/dc/dcmitype/Software"/>

        <SEO:methodHasParam>

          <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/getMinimumFor/Parameter_2">

            <SEO:isParamArray>false</SEO:isParamArray>

            <SEO:paramType>int</SEO:paramType>

            <SEO:paramName>j</SEO:paramName>

            <SEO:paramSeq>2</SEO:paramSeq>

            <foaf:name>j</foaf:name>

            <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#PARAMETER"/>

          </DC:Software>

        </SEO:methodHasParam>

        <SEO:methodCallSignature>getMinimumFor(i, j)</SEO:methodCallSignature>

        <SEO:hasStaticModifier>true</SEO:hasStaticModifier>

        <SEO:returnType>int</SEO:returnType>

        <foaf:name>getMinimumFor</foaf:name>

        <SEO:isReturnPrimitive>true</SEO:isReturnPrimitive>

        <SEO:methodName>getMinimumFor</SEO:methodName>

      </SEO:METHOD>

    </SEO:hasMethod>

    <SEO:hasMethod rdf:resource="http://www.seontology.org/activeseo/seoanno/data/getListForMinimumFor"/>

    <foaf:name>solution</foaf:name>

    <rdf:type rdf:resource="http://purl.org/dc/dcmitype/Software"/>

    <SEO:hasMethod>

      <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/printMatrix">

        <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#METHOD"/>

        <SEO:returnType>void</SEO:returnType>

        <SEO:methodCallSignature>printMatrix(word1, word2)</SEO:methodCallSignature>

        <SEO:isReturnPrimitive>true</SEO:isReturnPrimitive>

        <SEO:hasAccessModifier rdf:resource="http://www.seontology.org/activeseo/seo/v1#Private"/>

        <SEO:methodDeclarationSignature>void printMatrix(java.lang.String word1, java.lang.String word2)</SEO:methodDeclarationSignature>

        <SEO:methodHasParam>

          <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/printMatrix/Parameter_1">

            <SEO:isParamArray>false</SEO:isParamArray>

            <SEO:paramType>java.lang.String</SEO:paramType>

            <SEO:paramName>word1</SEO:paramName>

            <SEO:paramSeq>1</SEO:paramSeq>

            <foaf:name>word1</foaf:name>

            <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#PARAMETER"/>

          </DC:Software>

        </SEO:methodHasParam>

        <SEO:methodHasParam>

          <DC:Software rdf:about="http://www.seontology.org/activeseo/seoanno/data/printMatrix/Parameter_2">

            <SEO:isParamArray>false</SEO:isParamArray>

            <SEO:paramType>java.lang.String</SEO:paramType>

            <SEO:paramName>word2</SEO:paramName>

            <SEO:paramSeq>2</SEO:paramSeq>

            <foaf:name>word2</foaf:name>

            <rdf:type rdf:resource="http://www.seontology.org/activeseo/seo/v1#PARAMETER"/>

          </DC:Software>

        </SEO:methodHasParam>

        <foaf:name>printMatrix</foaf:name>

        <SEO:hasStaticModifier>true</SEO:hasStaticModifier>

        <SEO:methodName>printMatrix</SEO:methodName>

      </DC:Software>

    </SEO:hasMethod>

    <SEO:hasAccessModifier rdf:resource="http://www.seontology.org/activeseo/seo/v1#Public"/>

    <SEO:hasMethod rdf:resource="http://www.seontology.org/activeseo/seoanno/data/initializeMatrix"/>

  </SEO:CLASS>

</rdf:RDF>

 

Annotation in graph format

 

 

 

bottom of page