string的兩道經典面試題:如何反轉字符串及如何判斷某個字符在字符串中出現的次數

1.如何反轉字符串?不通過StringBuilder的reverse方法,而是利用java的棧:

 /**
         * 如何反轉一個字符串?不通過reserve方法。
         * 思路:利用數據結構的棧(stack),因爲棧的特點就是先入後出,先把每個字符按順序入棧,再依次出棧,可實現反轉。
         */

        /**
         * 需要反轉的字符串
         */
        String str = "ABCDEFG";

        /**
         * 將字符串變爲char數組
         */
        char[] charArray = str.toCharArray();

        /**
         * 聲明java的棧
         */
        Stack<Character> stack = new Stack<>();

        /**
         * 聲明stringbuilder
         */
        StringBuilder sb = new StringBuilder();

        /**
         * 通過foreach入棧
         */
        for (char item: charArray) {
            //push()是入棧
            stack.push(item);
        }

        /**
         * 通過for循環出棧
         */
        for (int i = 0 ;i < charArray.length ; i++){
            //pop()是出棧
            sb.append(stack.pop());
        }

        System.out.println("反轉前:"+str);

        System.out.println("反轉後:"+sb.toString());

        /**
         * 這裏介紹一下棧的幾個方法:
         * empty():判斷stack是否爲空;
         * peek():棧頂值
         * push():進棧
         * pop():出棧
         */

2.判斷某個字符在字符串中出現的次數,只能使用String自帶的方法來實現:

 /**
         * 判斷一個字符串中某個字符的出現的次數,只能使用 String 自帶的方法。
         * 思路:將需要判斷的字符利用replace方法替換成"",得到新的長度,用舊的長度來減去新長度就可以了
         */

        /**
         * 某個字符串
         */
        String str = "ABCBBBBQ";

        /**
         * 需要替換的字符串
         */
        String replacestr = "B";

        /**
         * 聲明數量
         */
        int count = 0;

        /**
         * 替換之前字符串的長度
         */
        int oldlength = str.length();

        /**
         * 將需要替換的字符串變爲空
         */
        str = str.replace(replacestr,"");

        /**
         * 用舊的字符串長度減去替換之後的長度就是某個字符串出現的次數
         */
        count = oldlength - str.length();

        /*
        *這裏輸出5
        */
        System.out.println(count);  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章