提交 87425b41 编写于 作者: 门心叼龙's avatar 门心叼龙

code prefext

上级 7f72d386
......@@ -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);
}
......
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);
}
}
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.
先完成此消息的编辑!
想要评论请 注册