Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
门心叼龙
java-data-algorithm
提交
87425b41
J
java-data-algorithm
项目概览
门心叼龙
/
java-data-algorithm
通知
2
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
java-data-algorithm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
87425b41
编写于
8月 07, 2019
作者:
门心叼龙
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
code prefext
上级
7f72d386
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
207 addition
and
1 deletion
+207
-1
testlib/src/main/java/G字符串/A002查找最大的回文子串/MainAlgorithm.java
testlib/src/main/java/G字符串/A002查找最大的回文子串/MainAlgorithm.java
+1
-1
testlib/src/main/java/temp/Test20190805_String.java
testlib/src/main/java/temp/Test20190805_String.java
+109
-0
testlib/src/main/java/temp/Test20190805_TreeNode.java
testlib/src/main/java/temp/Test20190805_TreeNode.java
+97
-0
未找到文件。
testlib/src/main/java/G字符串/A002查找最大的回文子串/MainAlgorithm.java
浏览文件 @
87425b41
...
...
@@ -11,7 +11,7 @@ import E链表.A001实现一个链表.ListNode;
*/
public
class
MainAlgorithm
{
public
static
void
main
(
String
[]
args
)
{
String
str
=
"
abc3220440223123131abcdefgha101ahgfedcba
"
;
String
str
=
"
2112
"
;
String
s
=
getLongtext
(
str
);
System
.
out
.
println
(
s
);
}
...
...
testlib/src/main/java/temp/Test20190805_String.java
0 → 100644
浏览文件 @
87425b41
package
temp
;
/**
* Description: <Test20190805_String><br>
* Author: mxdl<br>
* Date: 2019/8/7<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
Test20190805_String
{
// 1.翻转一个整数
public
static
int
reversInt
(
int
num
)
{
int
temp
=
0
;
while
(
num
!=
0
)
{
temp
=
temp
*
10
+
num
%
10
;
num
=
num
/
10
;
}
return
temp
;
}
// 2.查找一个数组中最大的非重复字符串
public
static
String
findMaxString
(
String
str
)
{
String
reg
=
"(.)\\1+"
;
String
[]
split
=
str
.
split
(
reg
);
String
max
=
""
;
for
(
String
currstr
:
split
)
{
if
(
currstr
.
length
()
>
max
.
length
())
{
max
=
currstr
;
}
}
return
max
;
}
// 3.查找最大的回文字符串
public
static
String
getMaxHuiWen
(
String
str
)
{
int
m
=
str
.
length
();
boolean
[][]
arr
=
new
boolean
[
m
][
m
];
int
maxlen
=
0
;
for
(
int
i
=
0
;
i
<
m
;
i
++)
{
arr
[
i
][
i
]
=
true
;
maxlen
=
1
;
}
String
result
=
""
;
for
(
int
i
=
0
;
i
<
str
.
length
()
-
1
;
i
++)
{
if
(
str
.
charAt
(
i
)
==
str
.
charAt
(
i
+
1
))
{
arr
[
i
][
i
+
1
]
=
true
;
result
=
str
.
substring
(
i
,
i
+
1
+
1
);
maxlen
=
2
;
}
}
for
(
int
len
=
3
;
len
<
str
.
length
();
len
++)
{
for
(
int
i
=
0
,
j
;
(
j
=
i
+
len
-
1
)
<
str
.
length
();
i
++)
{
if
(
str
.
charAt
(
i
)
==
str
.
charAt
(
j
))
{
arr
[
i
][
j
]
=
arr
[
i
+
1
][
j
-
1
];
if
(
arr
[
i
][
j
]
&&
maxlen
<
len
)
{
result
=
str
.
substring
(
i
,
j
+
1
);
}
}
else
{
arr
[
i
][
j
]
=
false
;
}
}
}
return
result
;
}
public
static
String
getMaxHuiWen1
(
String
str
)
{
boolean
[][]
arr
=
new
boolean
[
str
.
length
()][
str
.
length
()];
int
maxlen
=
0
;
String
result
=
null
;
for
(
int
i
=
0
;
i
<
str
.
length
();
i
++)
{
arr
[
i
][
i
]
=
true
;
}
for
(
int
i
=
0
;
i
<
str
.
length
()-
1
;
i
++)
{
if
(
str
.
charAt
(
i
)
==
str
.
charAt
(
i
+
1
))
{
maxlen
=
2
;
arr
[
i
][
i
+
1
]
=
true
;
result
=
str
.
substring
(
i
,
i
+
1
+
1
);
}
}
for
(
int
len
=
3
;
len
<=
str
.
length
();
len
++)
{
for
(
int
i
=
0
,
j
;
(
j
=
i
+
len
-
1
)
<
str
.
length
();
i
++)
{
if
(
str
.
charAt
(
i
)
==
str
.
charAt
(
j
)){
arr
[
i
][
j
]
=
arr
[
i
+
1
][
j
-
1
];
if
(
arr
[
i
][
j
]
&&
maxlen
<
len
){
maxlen
=
len
;
result
=
str
.
substring
(
i
,
j
+
1
);
}
}
else
{
arr
[
i
][
j
]
=
false
;
}
}
}
return
result
;
}
public
static
void
main
(
String
[]
args
)
{
int
i
=
reversInt
(
25461
);
System
.
out
.
println
(
i
);
String
maxString
=
findMaxString
(
"11abcdef22asaa789456123"
);
System
.
out
.
println
(
maxString
);
String
maxHuiWen
=
getMaxHuiWen1
(
"12abba2"
);
System
.
out
.
println
(
"maxHuiWen:"
+
maxHuiWen
);
}
}
testlib/src/main/java/temp/Test20190805_TreeNode.java
0 → 100644
浏览文件 @
87425b41
package
temp
;
import
sun.reflect.generics.tree.Tree
;
/**
* Description: <Test20190805_TreeNode><br>
* Author: mxdl<br>
* Date: 2019/8/7<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
Test20190805_TreeNode
{
// 1.二叉树的高
public
static
int
getTreeHeight
(
TreeNode
treeNode
)
{
if
(
treeNode
==
null
)
{
return
0
;
}
int
leftHeight
=
1
+
getTreeHeight
(
treeNode
.
leftNode
);
int
rightHeight
=
1
+
getTreeHeight
(
treeNode
.
rightNdoe
);
return
leftHeight
>
rightHeight
?
leftHeight
:
rightHeight
;
}
// 2.求二叉树的节点数
public
static
int
getTreeNodeCount
(
TreeNode
treeNode
)
{
if
(
treeNode
==
null
)
{
return
0
;
}
return
1
+
getTreeNodeCount
(
treeNode
.
leftNode
)
+
getTreeNodeCount
(
treeNode
.
rightNdoe
);
}
// 3.判断两个二叉树是否完全相等
public
static
boolean
isTreeNodeSame
(
TreeNode
treeNode1
,
TreeNode
treeNode2
)
{
if
(
treeNode1
==
null
&&
treeNode2
==
null
)
{
return
true
;
}
if
(
treeNode1
!=
null
&&
treeNode2
==
null
)
{
return
false
;
}
if
(
treeNode1
==
null
&&
treeNode2
!=
null
)
{
return
false
;
}
return
treeNode1
.
val
==
treeNode2
.
val
&&
isTreeNodeSame
(
treeNode1
.
leftNode
,
treeNode2
.
leftNode
)
&&
isTreeNodeSame
(
treeNode1
.
rightNdoe
,
treeNode2
.
rightNdoe
);
}
//4.判断一个二叉树是否是对等的二叉树
public
static
boolean
isSymTreeNdoe
(
TreeNode
treeNode
){
if
(
treeNode
==
null
){
return
true
;
}
else
{
return
isSymTreeNdoe
(
treeNode
.
leftNode
,
treeNode
.
rightNdoe
);
}
}
public
static
boolean
isSymTreeNdoe
(
TreeNode
leftNode
,
TreeNode
rightNode
){
if
(
leftNode
==
null
&&
rightNode
==
null
){
return
true
;
}
if
(
leftNode
!=
null
&&
rightNode
==
null
){
return
false
;
}
if
(
leftNode
==
null
&&
rightNode
!=
null
){
return
false
;
}
return
leftNode
.
val
==
rightNode
.
val
&&
isSymTreeNdoe
(
leftNode
.
leftNode
,
rightNode
.
rightNdoe
)
&&
isSymTreeNdoe
(
leftNode
.
rightNdoe
,
rightNode
.
leftNode
);
}
public
static
void
main
(
String
[]
args
)
{
TreeNode
treeNode
=
new
TreeNode
(
0
);
TreeNode
treeNode1
=
new
TreeNode
(
1
);
TreeNode
treeNode2
=
new
TreeNode
(
1
);
TreeNode
treeNode3
=
new
TreeNode
(
2
);
TreeNode
treeNode4
=
new
TreeNode
(
3
);
TreeNode
treeNode5
=
new
TreeNode
(
3
);
TreeNode
treeNode6
=
new
TreeNode
(
2
);
treeNode
.
leftNode
=
treeNode1
;
treeNode
.
rightNdoe
=
treeNode2
;
treeNode1
.
leftNode
=
treeNode3
;
treeNode1
.
rightNdoe
=
treeNode4
;
treeNode2
.
leftNode
=
treeNode5
;
treeNode2
.
rightNdoe
=
treeNode6
;
// treeNode1.leftNode = treeNode3;
int
treeHeight
=
getTreeHeight
(
treeNode
);
System
.
out
.
println
(
"treeHeight:"
+
treeHeight
);
int
treeNodeCount
=
getTreeNodeCount
(
treeNode
);
System
.
out
.
println
(
"treeNodeCount:"
+
treeNodeCount
);
boolean
treeNodeSame
=
isTreeNodeSame
(
treeNode
,
treeNode1
);
System
.
out
.
println
(
"treeNodeSame:"
+
treeNodeSame
);
boolean
symTreeNdoe
=
isSymTreeNdoe
(
treeNode
);
System
.
out
.
println
(
"symTreeNdoe:"
+
symTreeNdoe
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录