【T】

作者: Yaso | 来源:发表于2020-12-14 20:35 被阅读0次

Mark一下那些年做过的题,偶尔看看卷一卷~

///有效的括号  ( * )
import java.util.ArrayList;
import java.util.HashMap;
import java.util.*;

class Test {

    public static void main(String []args){

        String[] arg = {"(","*",")",")","*"};
        Boolean a = Vailed(arg);
        System.out.println(a);
    }

    public static Boolean Vailed(String[] args) {

        Stack <String> stack1 = new Stack <String> ();
        Stack <String> stack2 = new Stack <String> ();
        for (int i = 0; i < args.length; i++) {
            if (args[i] == "(") {
                stack1.push(args[i]);
            } else if (args[i] == "*") {
                stack2.push(args[i]);
            } else {
                if (!stack1.empty()) stack1.pop();
                else if (!stack2.empty()) stack2.pop();
                else return false;
            }
        }

        if (!stack1.empty()) {
            return stack1.size() == stack2.size();
        }
        return true;
    }
}
/// 回文串 :删除连续子串(删一次) 保持最大回文 
import java.util.ArrayList;

class HelloWorld1 {

    public static void main(String []args){

        String origin = "fffsdddaacfgaaddd";
        String s = longestSubStr(origin);
        System.out.printf("subStr:----%s---\n", s);

        int len = s.length();
        ArrayList<Integer> res = new ArrayList<Integer>();

        int i = 0;
        int j = len -1;
        while(i<j) {
            if (s.charAt(i) == s.charAt(j)) {
                i++;
                j--;
            } else {
                i++;
                res.add(i);
            }
        }

        if(res.size() > 0) {
            String a = s.substring(0, res.get(0));
            String b = s.substring(res.get(res.size() - 1)+1, s.length());
            System.out.printf("resultStr:%s\n", a.concat(b));
            String delStr = s.substring(res.get(0),res.get(res.size() - 1)+1);
            System.out.printf("delStr:%s\n", delStr);
        } else {
            System.out.printf("resultStr:%s\n", s);
            int index = origin.indexOf(s) == 0 ? 1 : 0; 
            System.out.printf("delStr:%s\n", origin.split(s)[index]);
        }
        
    }

    public static String longestSubStr(String s) {
        String res = "";
        for (int i = 0; i < s.length(); i++) {
            String res1 = get(s, i, i);
            String res2 = get(s, i, i+1);
            res = res1.length() > res.length() ? res1 : res;
            res = res2.length() > res.length() ? res2 : res;
        }

        return res;
    }

    public static String get(String s, int l, int r) {
        Boolean canMove = true; 
        while (l >= 0 && r < s.length()) {
            if ( s.charAt(l) == s.charAt(r)) {
                l--;
                r++;
                
            } else if (canMove) {
                int temp = l;
                while (temp >= 0 && r < s.length()) {
                    if (s.charAt(temp) != s.charAt(r)) {
                        temp--;
                    } else {
                        l = temp;
                        break;
                    }
                }
                canMove = false;
            } else {
                break;
            }
        }

        if (l==-1) {
            return s.substring(l+1, r);
        } else if (canMove == false) {
            return "";
        }
        //[)
        return s.substring(l+1, r); 
    };
}
///逆序对 :归并排序
class HelloWorld {

    public static void main(String []args){
        int []arr = {7,5,6,4};

        int a = reversePairs(arr);
        System.out.println(a);
    }

    public static int reversePairs(int[] nums) {
        int len = nums.length;

        if (len < 2) {
            return 0;
        }
        // int[] copy = new int[len];
        // for (int i = 0; i < len; i++) {
        //     copy[i] = nums[i];
        // }

        int[] temp = new int[len];
        return sort(nums, 0, nums.length-1, temp);
    }

    public static int sort(int[] nums, int left, int right, int[] temp) {
        if (left < right) {
            int mid = left + (right-left)/2;
            int leftPairs =  sort(nums,left,mid, temp);
            int rightPairs = sort(nums,mid+1,right, temp);
            int mergrPairs = merge(nums, left, mid, right, temp);

            return leftPairs+rightPairs+mergrPairs;
        }
        return 0;
    }

    public static int merge(int[] nums, int left, int mid, int right, int[] temp) {
        for (int i = left; i <= right; i++) {
            temp[i] = nums[i];
        }
        int i = left;
        int j = mid+1;

        int count = 0;
        for (int k = left; k <= right; k++) {
            if (i== mid+1) {
                nums[k] = temp[j];
                j++;
            } else if (j == right+1) {
                nums[k] = temp[i];
                i++;
            } else if(temp[i] <= temp[j]) {
                nums[k] = temp[i];
                i++;
            } else {
                nums[k] = temp[j];
                j++;
                count += mid-i+1;
            }
            
        }
        return count;
    }
}

相关文章

  • t t t t

    122

  • T^T泡面T^T

    小时候的愿望,领到第一笔工资,就买一箱方便面,过个瘾。吃个够。 不知从何时起,觉得泡面没...

  • T.T.T

    凌晨开始失眠 老旧的风扇作响 行人依旧失联 竞选的结果落榜 窗外还是午夜 四周死寂一片 黑暗掺杂呜咽 城市边缘底线...

  • T^T

    嗯,忽然不想说话,怕你觉得我无聊才找你,怕你不太想理我,怕你觉得我无聊,自卑心作祟,我怎么什么都没有,或许你没有,...

  • T^T

    难受得一批 现在上半个学期 都在为实习工作而奔波 之前在等校招对那些提前来学校的企业却没有上心 而校招也没有方向就...

  • T^T

    那些你很冒险的梦-林俊杰 当两颗心开始震动 当你瞳孔学会闪躲 当爱慢慢被遮住只剩下黑 距离像影子被拉拖 当爱的故事...

  • T﹏T

    小丑,正如它的名字一样,绿色头发惨白皮肤,咧着嘴涂着红色口红,的确给人的感觉不怎么好看。但正是它独特的造型,被凭借...

  • (T ^ T)

    我觉得世间人是最复杂的。 从一些相处之中,我感到一些人的固执几见最可悲。内心里就那点偏见,似乎再无其他。 有个人对...

  • 《看老友记学英语》Tit for tat 以牙还牙

    tit for tat 英 [ˌtɪt fə ˈtæt] 美 [ˌtɪt fər ˈtæt] n.以牙还牙;针...

  • hât-tât

    前日聽大人說話的說到“hat8-tat8”一詞,當時句中感覺可能是限制、約束之意吧;過後瞭解到是資金匱乏、緊缺或指...

网友评论

    本文标题:【T】

    本文链接:https://www.haomeiwen.com/subject/ulsbgktx.html