1. ホーム
  2. python

[解決済み] 文字列がループを使用して出現する回数を返す

2022-02-17 16:01:57

質問内容

という文字列が何回表示されたかを返す。 "hi" は、与えられた文字列のどこかに現れます。

count_hi('abc hi ho') # → 1

count_hi('ABChi hi') # → 2

count_hi('hihi') # → 2

この解答は私の手元にあります。

def count_hi(str):
    return str.count("hi")

しかし、私は与えられたヒントを用いて解決策を探しています。 for i in range(len(str)-1): ループで、文字列の最後のインデックスを除く各インデックスを調べます。各 i で始まる文字列を抽出します。 i までが含まれます。 i+2 . その文字列が "hi" その回数を数えてください。

この解決策も試しましたが、すべてのテストケースを通過することはできません。

def count_hi(str):
    count = 0
    for char in str:
        if char == 'hi':
           count += 1
    return count   

解決方法は?

以下はその一例です。

def count_hi(s):
    count = 0
    for i in range(len(s)-1):
        count += s[i]=='h' and s[i+1]=='i'
    return count

ここにもあります。

def count_hi2(s):
    count = 0
    for i in range(len(s)-1):
        count += s[i:i+2] == 'hi'
    return count

ディスカッション

このコードの断片を考えてみましょう。

for char in str:
    if char == 'hi':

これは、文字列中の個々の文字をループします。 str . したがって、このループでは char は常に1文字です。 その結果、2文字になることはありません。

また、文字列は別の名前を使うのがベストプラクティスです。 str は組み込み関数です。 Pythonは組み込み関数を自由に上書きできますが、その結果、簡単にアクセスできなくなります。