日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

strstr函数_【每日编程176期】实现strStr() II

發布時間:2025/3/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 strstr函数_【每日编程176期】实现strStr() II 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

每日編程中遇到任何疑問、意見、建議請公眾號留言或直接撩Q474356284(備注每日編程)

今日問題:

實現?strStr()?函數。

給定一個?haystack 字符串和一個 needle 字符串,在 haystack 字符串中找出 needle 字符串出現的第一個位置 (從0開始)。如果不存在,則返回??-1。

示例 1:

輸入: haystack= "hello", needle = "ll"

輸出: 2

示例 2:

輸入: haystack= "aaaaa", needle = "bba"

輸出: -1

說明:

當?needle?是空字符串時,我們應當返回什么值呢?這是一個在面試中很好的問題。

對于本題而言,當?needle?是空字符串時我們應當返回 0 。這與C語言的?strstr()?以及 Java的?indexOf()?定義相符。


解決方法:

算法思想:

原strstr()函數。

strstr(str1,str2) 函數用于判斷字符串str2是否是str1的子串。如果是,則該函數返回str2在str1中首次出現的地址;否則,返回NULL。

KMP算法。

參考:

http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html

C++代碼:

C代碼:

Java代碼:

據搜集,還有一種Boyer-Moore算法,一般情況下比KMP快3-5倍。

具體可參考:

https://baike.baidu.com/item/Boyer-%20Moore%E7%AE%97%E6%B3%95/16548374?fr=aladdin


明日題目預告:

兩數相除

給定兩個整數,被除數?dividend?和除數?divisor。將兩數相除,要求不使用乘法、除法和 mod 運算符。

返回被除數?dividend?除以除數?divisor?得到的商。

示例?1:

輸入: dividend= 10, divisor = 3

輸出: 3

示例?2:

輸入: dividend= 7, divisor = -3

輸出: -2

說明:

  • 被除數和除數均為 32 位有符號整數。

  • 除數不為?0。

  • 假設我們的環境只能存儲 32 位有符號整數,其數值范圍是 [?231,? 231?? 1]。本題中,如果除法結果溢出,則返回 231?? 1。

總結

以上是生活随笔為你收集整理的strstr函数_【每日编程176期】实现strStr() II的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。