數組&Stack棧的算法題

  • 返回相同字母組成

列如輸入這樣的一個數組['aeb','abe','rty','asd'],咱們需將相同字母組成的分類輸出的,最後應該輸出結果分別爲java

['aeb','abe'] ,數組

['rty'],app

['asd']函數

這時候咱們首先就須要想到先將每一個元素的字母按照字母排序,不一樣的符號的ASCII碼是不同的;而後就經過循環裏面增長內循環來進行hashCode比較。spa

代碼如圖:code

 

  • 給定一個只包括 '(',')','{','}','[',']' 的字符串,判斷字符串是否有效。

有效字符串需知足:對象

左括號必須用相同類型的右括號閉合。blog

左括號必須以正確的順序閉合。排序

注意空字符串可被認爲是有效字符串。字符串

代碼以下:

public boolean isValid(String s) {
        Stack<Character> stack = new Stack<Character>();
        for (char alp : s.toCharArray()) {
            if (alp == '(') {
                //說明須要含有閉合
                stack.push(')');
            } else if (alp == '[') {
                stack.push(']');
            } else if (alp == '{') {
                stack.push('}');
            }
            //stack.app()移除堆棧頂部的對象,並做爲此函數的值返回該對象。 返回]值與alp比較
            else if (stack.isEmpty() || stack.pop() != alp) {
                System.out.println("錯誤");
                return false;
            }
        }
        //若是stack爲空則正確,不然說明還有符號沒有對應上,形成stack不是空的
        if(stack.isEmpty()){
            System.out.println("正確");
        }else{
            System.out.println("錯誤");
        }

      return stack.size()==0?true:false;

    }
相關文章
相關標籤/搜索