Skip to content

Commit c04069d

Browse files
committed
🔥 consider algorithm
1 parent 6bc00d6 commit c04069d

File tree

3 files changed

+72
-30
lines changed

3 files changed

+72
-30
lines changed

src/cn/ucaner/algorithm/KMP/KMP.java

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,39 @@
1010
*/
1111
package cn.ucaner.algorithm.KMP;
1212

13+
/**
14+
* @Package:cn.ucaner.algorithm.KMP
15+
* @ClassName:KMP
16+
* @Description: <p> https://blog.csdn.net/yutianzuijin/article/details/11954939/ </p>
17+
* @Author: - Jason
18+
* @CreatTime:2018年4月23日 下午8:34:50
19+
* @Modify By:
20+
* @ModifyTime: 2018年4月23日
21+
* @Modify marker:
22+
* @version V1.0
23+
*/
1324
public class KMP {
14-
public static int[] preProcess(char[] B)
15-
{
25+
26+
public static int[] preProcess(char[] B){
1627
int size = B.length;
1728
int[] P = new int[size];
1829
P[0] = 0;
1930
int j = 0;
20-
21-
for(int i=1;i<size;i++)
22-
{
23-
while(j>0 && B[j]!=B[i])
24-
{
31+
//KMP中的核心算法,获得记录跳转状态的next数组
32+
for(int i=1;i<size;i++){//i表示字符串的下标,从0开始
33+
//j在每次循环开始都表示next[i]的值,同时也表示需要比较的下一个位置
34+
while(j>0 && B[j]!=B[i]){
2535
j = P[j];
2636
}
27-
if(B[j] == B[i])
28-
{
37+
if(B[j] == B[i]){
2938
j++;
3039
}
3140
P[i] = j;
3241
}
3342
return P;
3443
}
3544

36-
public static void kmp(String parStr,String subStr)
37-
{
45+
public static void kmp(String parStr,String subStr){
3846
int subSize = subStr.length();
3947
int parSize = parStr.length();
4048
char[] B = subStr.toCharArray();
@@ -68,8 +76,7 @@ public static void kmp(String parStr,String subStr)
6876
System.out.printf("Totally found %d times for '%s'.\n", k,subStr);
6977
}
7078

71-
public static void main(String[] args)
72-
{
73-
kmp("asdfhkasdsafabcabcdefasdfhasdf", "abcabcdef");
79+
public static void main(String[] args){
80+
kmp("ssdfafafadsgfasfrsafasabcgdsdgdasgasg", "abc");
7481
}
7582
}

src/cn/ucaner/algorithm/fibonacci/Fibonacci.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,24 @@
2424
public class Fibonacci {
2525

2626
public static void main(String[] args){
27-
int[] fib = new int[23];
27+
28+
int[] fib = new int[10];
2829

2930
fib[0] = 0;
3031
fib[1] = 1;
3132

3233
for(int i= 2;i<fib.length;i++){
33-
fib[i] = fib[i-1] + fib[i-2];
34+
fib[i] = fib[i-1] + fib[i-2];//Core 第3个数等于前两个数之和
3435
}
3536

3637
System.out.print("斐波那契亚数列: ");
37-
for(int i = 0;i<fib.length;i++)
38+
39+
for(int i = 0;i<fib.length;i++){
3840
System.out.print(fib[i] + " ");
41+
}
3942

4043
System.out.println();
4144
}
4245
}
46+
//Output
47+
//斐波那契亚数列: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711

src/cn/ucaner/algorithm/sorts/Convention.java

Lines changed: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,57 @@
1010
*/
1111
package cn.ucaner.algorithm.sorts;
1212

13-
public class Convention
14-
{
15-
/**
16-
* 求两数的最大公约数
17-
*/
18-
int divisor(int m,int n)
19-
{
13+
/**
14+
* @Package:cn.ucaner.algorithm.sorts
15+
* @ClassName:Convention
16+
* @Description: <p>Convention - 公约 </p>
17+
* @Author: - Jason
18+
* @CreatTime:2018年4月23日 下午8:40:19
19+
* @Modify By:
20+
* @ModifyTime: 2018年4月23日
21+
* @Modify marker:
22+
* @version V1.0
23+
*/
24+
public class Convention {
25+
26+
/**
27+
* @Description: 求两数的最大公约数
28+
* @param m
29+
* @param n
30+
* @return int
31+
* @Autor: Jason - jasonandy@hotmail.com
32+
*/
33+
static int divisor(int m,int n){
2034
if(m%n==0){
2135
return n;
2236
}else{
2337
return divisor(n,m%n);
2438
}
2539
}
2640

27-
/**
28-
* 求两数的最小公倍数
29-
*/
30-
int gbs(int a,int b)
31-
{
41+
/**
42+
* @Description: 求两数的最小公倍数
43+
* @param a
44+
* @param b
45+
* @return int
46+
* @Autor: Jason - jasonandy@hotmail.com
47+
*/
48+
static int gbs(int a,int b){
3249
int gbs = 0;
3350
gbs = a*b/divisor(a,b);
3451
return gbs;
35-
}
52+
}
53+
54+
/**
55+
* @Description: Just for test
56+
*/
57+
public static void main(String[] args) {
58+
//int m = 1115;
59+
//int n =828;
60+
int m = 8;
61+
int n = 12;
62+
System.out.println(divisor(m,n));//最大公约数
63+
System.out.println(gbs(m, n));//最小公倍数
64+
}
65+
3666
}

0 commit comments

Comments
 (0)