Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの文字ストリームから最初の非反復文字を検索します


文字のストリームがある場合、または文字列を検討でき、文字列内の最初の非反復文字を検索する必要があるとします。したがって、文字列が「人」のようなものである場合、出現する最初の文字は「o」です。したがって、インデックスが返されます。ここでは2です。そのような文字がない場合は、-1を返します。

これを解決するには、次の手順に従います-

  • 1つの頻度マップを作成する

  • 文字列内の文字cごとに、次のようにします

    • cが周波数にない場合は、それを周波数に挿入し、値1を入力します

    • それ以外の場合は、頻度のカウントを増やします

  • 頻度マップをスキャンします。特定のキーの値が1の場合はそのキーを返し、そうでない場合は-1を返します

理解を深めるために、次の実装を見てみましょう-

class Solution(object):
   def firstUniqChar(self, s):
      """
      :type s: str
      :rtype: int
      """
      frequency = {}
      for i in s:
         if i not in frequency:
            frequency[i] = 1
         else:
            frequency[i] +=1
      for i in range(len(s)):
         if frequency[s[i]] == 1:
            return i
      return -1
ob1 = Solution()
print(ob1.firstUniqChar("people"))
print(ob1.firstUniqChar("abaabba"))

入力

"people"
"abaabba"

出力

2
-1

  1. Pythonタプルから最初の要素をポップアップする方法は?

    定義上、タプルオブジェクトは不変です。したがって、要素を削除することはできません。ただし、回避策は、タプルをリストに変換し、リストから目的の要素を削除して、タプルに戻すことです。 >>> T1=(1,2,3,4) >>> L1=list(T1) >>> L1.pop(0) 1 >>> L1 [2, 3, 4] >>> T1=tuple(L1) >>> T1 (2, 3, 4)

  2. Pythonを使用して文字列から文字を削除するにはどうすればよいですか?

    文字列から特定のインデックスの文字を削除する場合は、文字列スライスを使用して、その文字を含まない文字列を作成できます。たとえば、 >>> s = "Hello World" >>> s[:4] + s[5:] "Hell World" ただし、文字または文字のリストのすべての出現を削除する場合は、次の方法を使用できます。 文字列クラスには、文字列内のサブ文字列を置き換えるために使用できるメソッドreplaceがあります。このメソッドを使用して、削除する文字を空の文字列に置き換えることができます。例: >>