字符串常見的筆試面試題(無(wú)代碼)-創(chuàng)新互聯(lián)

字符串是我們每個(gè)程序員每天都要接觸的數(shù)據(jù)類型,因此在面試的時(shí)候也有許多關(guān)于字符串的面試題,本文主要介紹面試常見的幾種題型。

松原ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

題型一?

?????本題主要判斷兩棵樹的拓?fù)浣Y(jié)構(gòu)是否相同,因此我們可以將此題轉(zhuǎn)化成字符串的寫法:將樹序列化,然后用KMP算法判斷t1樹的序列化串是否含有t2樹的序列化串即可,如果含有則說(shuō)明t2是t1的子樹,則滿足拓?fù)浣Y(jié)構(gòu)。


題型二

本題大部分讀者都很容易想到用兩個(gè)哈希表來(lái)存儲(chǔ)str1和str2的對(duì)應(yīng)字符的出現(xiàn)次數(shù),然后比較二者的哈希表,如果里面數(shù)據(jù)相同,則兩個(gè)字符串互為變形詞。


題型三

由分析可知,一個(gè)長(zhǎng)度為n的字符串旋轉(zhuǎn)詞的所有可能性為下標(biāo)0~下標(biāo)n-1之前的字符串移到最后方,因此我們可以直接拼接一個(gè)字符串S=str1+str1,可見,上述所有可能性都會(huì)包含在S里面作為S的子串,因此只需要判斷str2是否為S的子串即可。如果str2為S的子串,那么str1和str2互為旋轉(zhuǎn)詞。


題型四

本題我們可以利用字符串的反轉(zhuǎn)+局部反轉(zhuǎn)來(lái)解決問(wèn)題。對(duì)于這樣一個(gè)單詞間逆序的問(wèn)題,我們可以先將字符串整體反轉(zhuǎn),例如:“pig loves dog”--->“god sevol gip” 然后發(fā)現(xiàn),離我們的目標(biāo)“dog loves pig” 僅僅是每個(gè)單詞之間的順序還是逆序,所以我們?cè)龠M(jìn)行一個(gè)局部反轉(zhuǎn),對(duì)每個(gè)單詞進(jìn)行反轉(zhuǎn)即可將“god sevol gip”--->“dog loves pig”。


題型五

本題我們還是可以利用字符串的反轉(zhuǎn)+局部反轉(zhuǎn)來(lái)解決問(wèn)題。例如:“ABCDE”,i=2,將str調(diào)整為:“DEABC”,我們可以先將“ABCDE”? (0,i]的位置和? (i,n)的位置分別局部反轉(zhuǎn),變?yōu)椋骸癈BAED”然后發(fā)現(xiàn)離我們的目標(biāo)僅僅差一個(gè)整體反轉(zhuǎn),然后再進(jìn)行一個(gè)整體反轉(zhuǎn)即可。

(可見,許多關(guān)于字符串移動(dòng)或者逆序的問(wèn)題我們均可利用字符串的反轉(zhuǎn)和局部反轉(zhuǎn)來(lái)靈活解決問(wèn)題,這里需要讀者自行體會(huì))


題型六

本題我們大部分讀者會(huì)直接比較每個(gè)字符串的ASCII碼值來(lái)進(jìn)行排序,比如["ab","cd","ac"]排序后變?yōu)閇"ab","ac","cd"],雖然這種解法對(duì)于大部分情況都滿足,但是還是對(duì)于一些情況是不滿足的,例如題目中的["b","ba"]排完序后變?yōu)閇"b","ba"],但是我們可以知道,bab明顯比bba小,因此此時(shí)不成立。本題正確的解法是將str1+str2與str2+str1作比較,如果str1+str2>str2+str1,則str2排在str1前面,反之排在后面,這樣排完序再拼接起來(lái)的字符串才是所有可能性中字典順序最小的。


題型七

本題大部分語(yǔ)言均可直接調(diào)用字符串的庫(kù)(例如JAVA中調(diào)用replace,將空格直接都替換成%20)來(lái)完成。那么如果在純代碼情況下,我們可以構(gòu)造一個(gè)新的字符數(shù)組S(長(zhǎng)度n=str+空格數(shù)量*2),然后從左往右遍歷字符串str,如果遇到非空格字符則直接填入S,遇到空格則填入%20。


題型八

本題我們可以定義一個(gè)變量n來(lái)幫我們記錄此時(shí)左括號(hào)與右括號(hào)的差值,從左往右遍歷字符串,遇到左括號(hào)n++,遇到右括號(hào)n--,如果過(guò)程中發(fā)現(xiàn)n<0則不是有效的字符串,如果最后n!=0,也不是有效的字符串,當(dāng)且僅當(dāng)過(guò)程中n>=0并且最后n=0才是一個(gè)有效的字符串。


題型九

本題是經(jīng)典的求最長(zhǎng)無(wú)重復(fù)字符子串的長(zhǎng)度,我們可以利用哈希表來(lái)解決。定義一個(gè)當(dāng)前子串長(zhǎng)度變量now,從左往右遍歷字符串,并且將遍歷到的字符加入哈希表,如果發(fā)現(xiàn)哈希表中不包含本字符則當(dāng)前子串長(zhǎng)度now++,如果包含則需要回滾到上一個(gè)出現(xiàn)本字符的位置,然后now的長(zhǎng)度變?yōu)楫?dāng)前位置減去上一個(gè)出現(xiàn)本字符的位置(這邊讀者需要自己思考一下為什么),但是,如果上一個(gè)出現(xiàn)字符的位置在我們子串起始位置之前,我們不需要回滾。

具體代碼如下:

public class LengthOfLongestSubstring {
    public int lengthOfLongestSubstring(String s) {
        if(s.isEmpty())return 0;
        int i=-1;
        int max=1;
        int now=1;
        Mapmap=new HashMap<>();
        //遍歷數(shù)組
        for (int k = 0; k< s.length(); k++) {
            if(map.getOrDefault(s.charAt(k),-1)!=-1){  //判斷哈希表中是否有本元素
                //有的話就將i值挪到上一個(gè)重復(fù)的地方  但是要注意,不可回退 因此要判斷大小
                i=map.getOrDefault(s.charAt(k),-1)>i?map.getOrDefault(s.charAt(k),-1):i;
            }
            now=k-i;//用當(dāng)前值減去上一個(gè)重復(fù)的
            map.put(s.charAt(k),k);
            max= Math.max(now, max); //取二者大值
        }
        return max;
    }
}

以上是常見的JAVA筆試面試題(圖片來(lái)源于牛客網(wǎng))。字符串在筆試面試中是必考的題目,希望讀者們能深入理解每種解題的思想。一起加油進(jìn)步!

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前標(biāo)題:字符串常見的筆試面試題(無(wú)代碼)-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://muchs.cn/article2/ddoeoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)公司、動(dòng)態(tài)網(wǎng)站微信小程序、關(guān)鍵詞優(yōu)化、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化