日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Java面試題:如何判斷一個字符串中某個字符出現的次數?

 

1. 前言

最近面試了幾家公司,體驗了一下電話面試和今年火起來的視頻面試,

雖然之前就有一些公司會先通過電話面試的形式先評估下候選人的能力水平,但好像不多,至少我以前的面試形式100%都是現場面試

面試過程中,不可避免的被問到了很多面試題,本篇博客就總結下面試過程中被問到的關于String的2道面試題,分別是:

  1. 如何判斷一個字符串中某個字符出現的次數?
  2. 如何反轉一個字符串?

2. 如何判斷一個字符串中某個字符出現的次數?

在直接問這個問題之前,面試官先問了我下面這個問題:

請說一下String常用的方法有哪些?

該問題其實是考察JAVA基礎,畢竟String類在平時的開發中使用非常廣泛,我當時主要說了以下方法:

  1. length
  2. equals
  3. trim
  4. substring
  5. concat
  6. indexOf
  7. lastIndexOf
  8. replace
  9. split
  10. toLowerCase
  11. toUpperCase

以上只是面試時我想到的一少部分方法,更多String的方法大家可在IDEA中查看源碼,畢竟太多了,如下所示:

Java面試題:如何判斷一個字符串中某個字符出現的次數?

 


Java面試題:如何判斷一個字符串中某個字符出現的次數?

 

在回答完上述問題后,面試官緊接著問了該問題:

如何判斷一個字符串中某個字符出現的次數?

聽到該問題,我腦海中第一反應是先把字符串轉換為字符數組,然后使用foreach循環,在循環體內進行字符比對,代碼如下所示:

public static void main(String[] args) {
    String str = "ABC123ABC";
    char searchChar = 'B';
    int count = 0;
    char[] charArray = str.toCharArray();
    for (char item : charArray) {
        if (item == searchChar) {
            count++;        }    }    System.out.println("字符" + searchChar + "出現的次數為:" + count);
}

輸出結果如下所示:

字符B出現的次數為:2

但面試題肯定不會這么簡單,緊接著面試官增加了限制條件:

如果不能使用循環,只使用String自己的方法,如何實現呢?

實現方法有很多種,但我推薦使用replace()方法,很好理解,并且高效,代碼如下所示:

public static void main(String[] args) {
    String str = "ABC123ABC";
    String searchChar = "B";
    int count = 0;
    int origialLength = str.length();
    str = str.replace(searchChar, "");
    int newLength = str.length();
    count = origialLength - newLength;    System.out.println("字符" + searchChar + "出現的次數為:" + count);
}

而且我覺得,關于面試題:如何判斷一個字符串中某個字符出現的次數?,上面這個實現方法才是面試官真正想聽到的答案。

3. 如何反轉一個字符串?

因為是電話面試,在面了1個小時,面試快結束的時候,面試官問了該問題:

怎么讓一個字符串反轉?說下思路即可

可能很多同學第一時間想到的思路是下面這樣的:

public static void main(String[] args) {
    String str = "ABC123ABC";
    StringBuilder stringBuilder = new StringBuilder(str);
    stringBuilder.reverse();    String newStr = stringBuilder.toString();    System.out.println("反轉前:" + str);
    System.out.println("反轉后:" + newStr);
}

但我覺得這肯定不是面試官問這個問題的意圖,所以我當時的回答是下面這樣的:

可以利用數據結構中的棧,因為棧的特點是先入后出(這里可以提一下和隊列的不同,隊列的特點是先入先出),先把字符串中的每個字符按順序入棧,再依次出棧,即可實現字符串的反轉。

即入棧順序是:A B C 1 2 3 A B C

而出棧順序是:C B A 3 2 1 C B A

轉換成Java代碼是下面這樣的:

public static void main(String[] args) {
    String str = "ABC123ABC";
    char[] charArray = str.toCharArray();
    Stack<Character> stack = new Stack<>();
    StringBuilder newStr = new StringBuilder();
    for (char item : charArray) {
        stack.push(item);
    }    for (int i = 0; i < charArray.length; i++) {
        newStr.Append(stack.pop());
    }    System.out.println("反轉前:" + str);
    System.out.println("反轉后:" + newStr.toString());
}

輸出結果如下所示:

反轉前:ABC123ABC

反轉后:CBA321CBA

作者:申城異鄉人

原文鏈接:https://blog.csdn.net/zwwhnly/article/details/104756980

分享到:
標簽:Java
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定