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
-
Pythonタプルから最初の要素をポップアップする方法は?
定義上、タプルオブジェクトは不変です。したがって、要素を削除することはできません。ただし、回避策は、タプルをリストに変換し、リストから目的の要素を削除して、タプルに戻すことです。 >>> T1=(1,2,3,4) >>> L1=list(T1) >>> L1.pop(0) 1 >>> L1 [2, 3, 4] >>> T1=tuple(L1) >>> T1 (2, 3, 4)
-
Pythonを使用して文字列から文字を削除するにはどうすればよいですか?
文字列から特定のインデックスの文字を削除する場合は、文字列スライスを使用して、その文字を含まない文字列を作成できます。たとえば、 >>> s = "Hello World" >>> s[:4] + s[5:] "Hell World" ただし、文字または文字のリストのすべての出現を削除する場合は、次の方法を使用できます。 文字列クラスには、文字列内のサブ文字列を置き換えるために使用できるメソッドreplaceがあります。このメソッドを使用して、削除する文字を空の文字列に置き換えることができます。例: >>