亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線(xiàn)咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

Java面試題:如何判斷一個(gè)字符串中某個(gè)字符出現(xiàn)的次數(shù)?

 

1. 前言

最近面試了幾家公司,體驗(yàn)了一下電話(huà)面試和今年火起來(lái)的視頻面試,

雖然之前就有一些公司會(huì)先通過(guò)電話(huà)面試的形式先評(píng)估下候選人的能力水平,但好像不多,至少我以前的面試形式100%都是現(xiàn)場(chǎng)面試。

面試過(guò)程中,不可避免的被問(wèn)到了很多面試題,本篇博客就總結(jié)下面試過(guò)程中被問(wèn)到的關(guān)于String的2道面試題,分別是:

  1. 如何判斷一個(gè)字符串中某個(gè)字符出現(xiàn)的次數(shù)?
  2. 如何反轉(zhuǎn)一個(gè)字符串?

2. 如何判斷一個(gè)字符串中某個(gè)字符出現(xiàn)的次數(shù)?

在直接問(wèn)這個(gè)問(wèn)題之前,面試官先問(wèn)了我下面這個(gè)問(wèn)題:

請(qǐng)說(shuō)一下String常用的方法有哪些?

該問(wèn)題其實(shí)是考察JAVA基礎(chǔ),畢竟String類(lèi)在平時(shí)的開(kāi)發(fā)中使用非常廣泛,我當(dāng)時(shí)主要說(shuō)了以下方法:

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

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

Java面試題:如何判斷一個(gè)字符串中某個(gè)字符出現(xiàn)的次數(shù)?

 


Java面試題:如何判斷一個(gè)字符串中某個(gè)字符出現(xiàn)的次數(shù)?

 

在回答完上述問(wèn)題后,面試官緊接著問(wèn)了該問(wèn)題:

如何判斷一個(gè)字符串中某個(gè)字符出現(xiàn)的次數(shù)?

聽(tīng)到該問(wèn)題,我腦海中第一反應(yīng)是先把字符串轉(zhuǎn)換為字符數(shù)組,然后使用foreach循環(huán),在循環(huán)體內(nèi)進(jìn)行字符比對(duì),代碼如下所示:

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 + "出現(xiàn)的次數(shù)為:" + count);
}

輸出結(jié)果如下所示:

字符B出現(xiàn)的次數(shù)為:2

但面試題肯定不會(huì)這么簡(jiǎn)單,緊接著面試官增加了限制條件:

如果不能使用循環(huán),只使用String自己的方法,如何實(shí)現(xiàn)呢?

實(shí)現(xiàn)方法有很多種,但我推薦使用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 + "出現(xiàn)的次數(shù)為:" + count);
}

而且我覺(jué)得,關(guān)于面試題:如何判斷一個(gè)字符串中某個(gè)字符出現(xiàn)的次數(shù)?,上面這個(gè)實(shí)現(xiàn)方法才是面試官真正想聽(tīng)到的答案。

3. 如何反轉(zhuǎn)一個(gè)字符串?

因?yàn)槭请娫?huà)面試,在面了1個(gè)小時(shí),面試快結(jié)束的時(shí)候,面試官問(wèn)了該問(wèn)題:

怎么讓一個(gè)字符串反轉(zhuǎn)?說(shuō)下思路即可

可能很多同學(xué)第一時(shí)間想到的思路是下面這樣的:

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

但我覺(jué)得這肯定不是面試官問(wèn)這個(gè)問(wèn)題的意圖,所以我當(dāng)時(shí)的回答是下面這樣的:

可以利用數(shù)據(jù)結(jié)構(gòu)中的棧,因?yàn)闂5奶攸c(diǎn)是先入后出(這里可以提一下和隊(duì)列的不同,隊(duì)列的特點(diǎn)是先入先出),先把字符串中的每個(gè)字符按順序入棧,再依次出棧,即可實(shí)現(xiàn)字符串的反轉(zhuǎn)。

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

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

轉(zhuǎn)換成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("反轉(zhuǎn)前:" + str);
    System.out.println("反轉(zhuǎn)后:" + newStr.toString());
}

輸出結(jié)果如下所示:

反轉(zhuǎn)前:ABC123ABC

反轉(zhuǎn)后:CBA321CBA

作者:申城異鄉(xiāng)人

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

分享到:
標(biāo)簽:Java
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定