Starting from:
$35

$29

Homework 2 DDLSolution

    1. KMP(50%)


通过实现KMP算法,给定一个文本 S 和模式 P ,得出 P 出现在 S 中多少次, 以及出现的位置。


要求:

1. 计算出模式 P 的 next 数组。


实现    接口

computeNextArray


    • public static int[] computeNextArray(String pattern) {

2/* TODO: YOUR CODE HERE */

3   }

样例输入:



    • int[] next;

    • next = computeNextArray("touristrealgod");

3 System.out.println(Arrays.toString(next)); 4 next = computeNextArray("asardasd");

5   System.out.println(Arrays.toString(next));

样例输出:



    • [-1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]

2   [-1, 0, 0, 1, 0, 0, 1, 2]



2. 计算 P 出现在 S 中多少次。


实现    接口:

KMPSearchTimes



1

2

3

4

5

6


public static int KMPSearchTimes(String text, String pattern) { /*

TODO: YOUR CODE HERE

利用第一问实现的next数组

*/

}

样例输入:



    • String P,S;

2   P = "wo";

3   S = "chenljnbwowowoo";

4 System.out.println(KMPSearchTimes(S,P)); 5 P = "tourist";

6   S = "touristrealgod";

7   System.out.println(KMPSearchTimes(S,P));
样例输出:



    • 3

2   1




3. 计算 P 出现在 S 中的位置。


实现    接口:

KMPFindLocations



1

2

3

4

5

6


public static LinkedList<Integer> KMPFindLocations(String text, String pattern) {

/*

TODO: YOUR CODE HERE

利用第一问实现的next数组

*/

}


样例输入:



1

2

3

4

5

6

7


String P,S;

P = "wo";

S = "chenljnbwowowoo";

System.out.println(KMPFindLocations(S,P));

P = "tourist";

S = "touristrealgod";

System.out.println(KMPFindLocations(S,P));


样例输出:



1

2


[8, 10, 12]

[0]




    2. 字符串运算(50%)


给定两个字符串形式的16进制整数 num1 和 num2 。


注意:

        1. num1 和 num2 都只包含 0-9A-F,同时可包含+-符号(只考虑出现在首位,也可不出现);

        2. num1 和 num2 均不以零开头,除非是数字 0 本身;

        3. 不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式进行处理。

        4. 输入的单个字符串长度不超过200位


    1. 计算它们的和,结果也为字符串形式。


接口:

addStringspublic static String addStrings(String num1, String num2){

    • /*

    • TODO: YOUR CODE HERE

    • */

5   }

样例输入:



    • String num1, num2;

2   num1 = "2";

3   num2 = "3";

4 System.out.println(addStrings(num1,num2)); 5 num1 = "123";

6   num2 = "456";

7   System.out.println(addStrings(num1,num2));

样例输出:



        ◦ 5

2   579

    2. 计算乘积,结果也为字符串形式。

接口:

multiply


    • public static String multiply(String num1, String num2){

    • /*

    • TODO: YOUR CODE HERE

    • */

5   }

样例输入:



    • String num1, num2;

2   num1 = "2";

3   num2 = "3";

4 System.out.println(multiply(num1,num2)); 5 num1 = "123";

6   num2 = "456";

7   System.out.println(multiply(num1,num2));

样例输出:



    • 6

    • 56088

More products