LeetCodeに毎日挑戦してみた 28. Implement strStr()(Python、Go)
はじめに
無料英単語サイトE-tanを運営中の@ishishowです。
プログラマとしての能力を上げるために毎日leetcodeに取り組み、自分なりの解き方を挙げていきたいと思います。
Leetcodeとは
leetcode.com
ソフトウェア開発職のコーディング面接の練習といえばこれらしいです。
合計1500問以上のコーデイング問題が投稿されていて、実際の面接でも同じ問題が出されることは多いらしいとのことです。
golang入門+アルゴリズム脳の強化のためにgoとPythonで解いていこうと思います。(Pythonは弱弱だが経験あり)
10問目(問題28)
28. Implement strStr()
- 問題内容
Implement strStr().
Return the index of the first occurrence of needle in haystack, or
-1
ifneedle
is not part ofhaystack
.Clarification:
What should we return when
needle
is an empty string? This is a great question to ask during an interview.For the purpose of this problem, we will return 0 when
needle
is an empty string. This is consistent to C's strstr() and Java's indexOf().
**
Example 1:
Input: haystack = "hello", needle = "ll"
Output: 2
Example 2:
Input: haystack = "aaaaa", needle = "bba"
Output: -1
Example 3:
Input: haystack = "", needle = ""
Output: 0
考え方
haystack - needle回ループを回します ← それ以上する必要がないため
一文字ごとに判定して違ったらその判定処理を抜けます
needle の文字数と一致したらその時のindexを返します
- 解答コード
def strStr(self, haystack, needle):
if needle == "":
return 0
for i in range(len(haystack)-len(needle)+1):
for j in range(len(needle)):
if haystack[i+j] != needle[j]:
break
if j == len(needle)-1:
return i
return -1
- Goでも書いてみます!
func strStr(haystack string, needle string) int {
for i := 0; i < len(haystack)-len(needle)+1; i++ {
j := 0
for ; j < len(needle); j++ {
if needle[j] != haystack[i+j] {
break
}
}
if j == len(needle) {
return i
}
}
return -1
}
別解
(1)
class Solution(object):
def strStr(self, haystack, needle):
return haystack.find(needle)
findを使うとstrstr同様にその単語のindexを表示してくれます
(2)
class Solution(object):
def strStr(self, haystack, needle):
for i in range(len(haystack) - len(needle)+1):
if haystack[i:i+len(needle)] == needle:
return i
return -1
こちらは文字列の長さで比較しています。私は最初こちらを作成しました。
(3)
import "strings"
func strStr(haystack string, needle string) int {
return strings.Index(haystack, needle)
}
goのfind版です
Author And Source
この問題について(LeetCodeに毎日挑戦してみた 28. Implement strStr()(Python、Go)), 我々は、より多くの情報をここで見つけました https://qiita.com/ishishow/items/da5a76e18b33532785dd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .