mobike

1.單向鏈表的原地反轉算法

public class A {

    public A next;

    private int n;

    public A(int n) {
        this.n = n;
    }

    public static A reverse(A a){
        A current = a.next;
        a.next = null;
        A last = a;

        while(true){
            if (current == null) {
                break;
            }else{
                A c = current.next;
                current.next = last;
                last = current;
                current = c;
            }
        }

        return last;
    }

    public static void main(String[] args) {
        A a1 = new A(1);

        A a2 = new A(2);
        a1.next = a2;

        A a3 = new A(3);
        a2.next = a3;

        A last = reverse(a1);
        System.out.println(last.n);
        System.out.println(last.next.n);
        System.out.println(last.next.next.n);
    }

}

2.消除字符串中成對的括號,必須成對匹配,不然打印errorapp

public class B{

    public static void removeBrackets(char[] arr){
        int leftBracket = 0;
        StringBuilder sb = new StringBuilder();
        for (char ch : arr) {
            if (ch == '(') {
                leftBracket++;
            }else if(ch == ')'){
                if (leftBracket == 0) {
                    System.out.println("error");
                    return;
                }else{
                    leftBracket --;
                }
            }else{
                sb.append(ch);
            }
        }
        if ( leftBracket != 0 ) {
            System.out.println("error");
            return;
        }
        System.out.println(sb.toString());
    }


    public static void main(String[] args) {
        String s = "1(23456(789)abc)";
        removeBrackets(s.toCharArray());
    }
}

3.將長度爲a的單向鏈表連接到長度爲b的單向鏈表,算法複雜度是 A. O(blogb) B. O(b) C.O(a*b) D. O(logb)ui

相關文章
相關標籤/搜索