替换空格
/**
*@Description: 将字符串中所有的空格替换为%
*@Author: dyy
*/
public class ReplaceSpace {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
System.out.println(replaceSpace1(new StringBuffer(str1)));
System.out.println(replaceSpace2(new StringBuffer(str1)));
}
public static String replaceSpace1(StringBuffer str){
String string = str.toString();
char[] ch = string.toCharArray();
StringBuffer sb = new StringBuffer();
for(int i = 0; i <ch.length;i++){
if(ch[i]==' '){
sb.append("%20");
}else{
sb.append(ch[i]);
}
}
return sb.toString();
}
public static String replaceSpace2(StringBuffer str){
return str.toString().replaceAll(" ","%20");
}
}
从尾到头打印单链表
import java.util.ArrayList;
import java.util.Stack;
/**
*@Description: 从尾到头打印链表
*@Author: dyy
*/
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class PrintListFromTailToHead {
public static void main(String[] args) {
}
public ArrayList<Integer> printListFromTailToHead1(ListNode listNode){
Stack<Integer> stack = new Stack<>();
ArrayList<Integer> list = new ArrayList<>();
ListNode temp = listNode;
while (temp!=null){
stack.push(temp.val);
temp = temp.next;
}
while (!stack.isEmpty()){
list.add(stack.pop());
}
return list;
}
ArrayList<Integer> list = new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead2(ListNode listNode){
if(listNode!=null){
this.printListFromTailToHead2(listNode.next);
list.add(listNode.val);
}
return list;
}
}
重建二叉树
class TreeNode{
int val;
TreeNode left;
TreeNode right;
public TreeNode(int x){
val = x;
}
}
public class ReConstructBinaryTree {
public static void main(String[] args) {
}
public TreeNode reConstructBinaryTree(int [] pre,int [] in) {
if(pre.length==0||in.length==0||pre.length!=in.length){
return null;
}
TreeNode root = new TreeNode(pre[0]);
int len = 0;
while (in[len]!=root.val){
len++;
}
int[] preLeft = new int[len];
int[] inLeft = new int[len];
int[] preRight = new int[pre.length-len-1];
int[] inRight = new int[in.length-len-1];
for(int j = 0; j < in.length;j++){
if(j<len){
preLeft[j] = pre[j+1];
inLeft[j] = in[j];
}else if(j>len){
preRight[j-len-1] = pre[j];
inRight[j-len-1] = in[j];
}
}
root.left = reConstructBinaryTree(preLeft,inLeft);
root.right = reConstructBinaryTree(preRight,inRight);
return root;
}
}