字符串查找

對(duì)于一個(gè)給定的 source 字符串和一個(gè) target 字符串,你應(yīng)該在 source 字符串中找出 target 字符串出現(xiàn)的第一個(gè)位置(從0開(kāi)始)。如果不存在,則返回 -1。

說(shuō)明:在面試中我是否需要實(shí)現(xiàn)KMP算法?

  • 不需要,當(dāng)這種問(wèn)題出現(xiàn)在面試中時(shí),面試官很可能只是想要測(cè)試一下你的基礎(chǔ)應(yīng)用能力。當(dāng)然你需要先跟面試官確認(rèn)清楚要怎么實(shí)現(xiàn)這個(gè)題。
  • 樣例
    如果 source = "source" 和 target = "target",返回 -1。
    如果 source = "abcdabcdefg" 和 target = "bcd",返回 1。
    O(n2)的算法是可以接受的。如果你能用O(n)的算法做出來(lái)那更加好。(提示:KMP)
public class strStr {
    /**
     * 解決思路:首先我們有source字符串和target字符串,source字符串最后的幾個(gè)字符串長(zhǎng)度小于target肯定不會(huì)有首次出現(xiàn)的可能。
     * 所以應(yīng)該進(jìn)行遍歷操作的source字符串的長(zhǎng)度是(source.length-target.length)的長(zhǎng)度。
     * 在上面那個(gè)遍歷中,我們可以獲取source的position獲取具體字符,再將target的所有字符串進(jìn)行遍歷,如果第一個(gè)字符與source的相同
     * 那么
     * ,繼續(xù)下一個(gè)target及下一個(gè)source中的字符進(jìn)行對(duì)比,直到target.length次后如果完全想同則返回外層遍歷那個(gè)position,
     * 如果不同則返回上層遍歷,postion+1,繼續(xù)進(jìn)行target的比對(duì)操作,如果全部沒(méi)有則返回-1;
     * 時(shí)間復(fù)雜度為:O(n^2)
     */
    public int solution(String source, String target) {
        if (source == null || target == null) {
            return -1;
        }
        for (int i = 0; i <= source.length() - target.length(); i++) {
            int j = 0;
            for (j = 0; j < target.length(); j++) {
                if (source.charAt(i + j) != target.charAt(j))
                    break;
            }
            if (j == target.length()) {
                return i;
            }

        }

        return -1;
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 描述 對(duì)于一個(gè)給定的 source 字符串和一個(gè) target 字符串,你應(yīng)該在 source 字符串中找出, t...
    6默默Welsh閱讀 335評(píng)論 0 0
  • 一.順序查找 1.1 思路:這是最簡(jiǎn)單的算法,從頭開(kāi)始遍歷每個(gè)元素,并將每個(gè)元素與查找元素比較,如果一致則返回。1...
    deffing閱讀 1,292評(píng)論 0 1
  • 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。 難度:容易 要求: 對(duì)于一個(gè)給定的 source 字符串和一...
    柒黍閱讀 420評(píng)論 0 0
  • 今日觀點(diǎn) 《搜神記》里的三個(gè)故事:孔子斗大魚(yú)的故事、李寄斬蛇的故事、度朔君的故事。從中梳理出鬼靈精怪的生成原理和行...
    爺有蔓草閱讀 950評(píng)論 0 0
  • 強(qiáng)子背著噴霧器給麥子打藥,那個(gè)時(shí)候麥子差不多快熟了,根本不用打藥,可強(qiáng)子還是去了。 毒辣的太陽(yáng)烤著麥田,陽(yáng)光和麥田...
    心晴豆瓣醬閱讀 354評(píng)論 0 0

友情鏈接更多精彩內(nèi)容