4月30日算法刷题

import javax.xml.stream.events.Characters;
import java.util.*;

public class test_04_27 {

    //KMP算法

    //替换空格
    public static void test1(String s){
        StringBuilder stringBuilder = new StringBuilder();
        for (int i=0;i hashMap = new TreeMap<>();
        for (int i=0;i values = hashMap.values();
        Integer[] integers = values.toArray(new Integer[values.size()]);

        int res = 0;
        int x = -1;
        for (int i=0;ix){
                x=integers[i];
            }
        }
        if (x!=-1){
            res += x;
        }

        System.out.println(res);
    }

    //验证回文串
    public static boolean test4(String s){
        int i=0;
        int j=s.length()-1;
        while (ires.length()){
                    res=s.substring(i,j+1);
                }
                i++;
                j++;
            }
        }
        System.out.println(res);
    }
    //最长回文子序列
    //   b a c a d b
    // b
    // a
    // c
    // b
    public static void test6(String s){
        int n = s.length();
        int[][] dp = new int[n][n];
        int res = 1;
        for (int k=0;k0?1:0;
        for (int i=s.length()-1;i>=end;i--){
            if (!Character.isDigit(s.charAt(i))){
                System.out.println("不符合");
                return;
            }
            res += (s.charAt(i)-48)*k;
            k=k*10;
        }
        if (flag==2){
            System.out.println(-1*res);
        }else{
            System.out.println(res);
        }
    }
    //最长有效括号
    //)()())
    public static void test8(String s){
        int n = s.length();
        int[] dp = new int[n];
        for (int i=0;i=0&&(s.charAt(i-dp[i-1]-1)=='(')){
                        if (i-dp[i-1]-2>=0){
                            dp[i]=dp[i-1]+2+dp[i-dp[i-1]-2];
                        }else{
                            dp[i]=dp[i-1]+2;
                        }
                    }
                }else{
                    if (i-2>=0){
                        dp[i]=dp[i-2]+2;
                    }
                }
            }
        }
        System.out.println(Arrays.toString(dp));
    }


    //给出一个合法的
    public static void test9(String s){
        int max=0;
        int count=0;
        for (int i=0;i0){
            q=q.next;
        }
        //判断
        if (q==null&&k>0){
            System.out.println("找不到");
            return;
        }
        while (q!=null){
            p=p.next;
            q=q.next;
        }
        System.out.println(p.data);
    }

    //删除链表中倒数第k个节点
    public static TreeNode test14(TreeNode root,int k){
        TreeNode p = root;
        TreeNode q = root;
        while (q!=null&&k-->0){
            q=q.next;
        }
        //判断
        if (q==null&&k>0){
            System.out.println("找不到");
            return null;
        }
        TreeNode pre = null;
        while (q!=null){
            pre = p;
            p=p.next;
            q=q.next;
        }
        if (pre==null){
            root = root.next;

        }else{
            pre.next=p.next;
        }
        return root;
    }
    //合并两个排序的链表
    //1
    //2 3
    public static TreeNode test15(TreeNode root1, TreeNode root2){
        TreeNode dump = new TreeNode(-1);
        TreeNode p = dump;
        while (root1!=null&&root2!=null){
            if (root1.data0&&nums[i]==nums[i-1]){
                if (nums[i]==target){
                    res[1]=i;
                }
                i++;
            }else{
                if (target==nums[i]){
                    res[0]=i;
                    res[1]=i;
                }
                i++;
            }
        }
        return res;
    }
    public static void main(String[] args) {
        int[] ints = searchRange(new int[]{5,7,7,7,8,8,10}, 7);
        System.out.println(Arrays.toString(ints));
    }
}

你可能感兴趣的:(java,算法,开发语言)