問題
原文
Given a string
s
consisting of lowercase English letters, return the first letter to appear twice.Note:
- A letter
a
appears twice before another letterb
if the second occurrence ofa
is before the second occurrence ofb
.s
will contain at least one letter that appears twice.
Example 1:
12345678 Input: s = "abccbaacz"Output: "c"Explanation:The letter 'a' appears on the indexes 0, 5 and 6.The letter 'b' appears on the indexes 1 and 4.The letter 'c' appears on the indexes 2, 3 and 7.The letter 'z' appears on the index 8.The letter 'c' is the first letter to appear twice, because out of all the letters the index of its second occurrence is the smallest.Example 2:
1234 Input: s = "abcdd"Output: "d"Explanation:The only letter that appears twice is 'd' so we return 'd'.
Constraints:
2 <= s.length <= 100
s
consists of lowercase English letters.s
has at least one repeated letter.
内容
英子文字で構成される文字列sが与えられるので、最初に2回出現する文字を返してください。
・もし、aの2回目の出現がbの2回目の出現よりも前に発生した場合、aはbが現れる前に2回出現したとします。
・文字列sは少なくとも1つの2回出現する文字を持ちます。
※正しくない可能性があります。
解答
解答1:Python, dict
1 2 3 4 5 6 7 8 9 10 |
class Solution: def repeatedCharacter(self, s: str) -> str: count_dict = {} for i in s: if i in count_dict.keys(): count_dict[i] += 1 if count_dict[i] == 2: return i else: count_dict[i] = 1 |
初めて出現したときはcount_dictにその文字と1を追加。
2回目に出現したときはcount_dict内の値を1増やす。
その値が2になっていれば関数の戻り値とする。
解答2:Python, set
1 2 3 4 5 6 7 8 |
class Solution: def repeatedCharacter(self, s: str) -> str: letters = set() for i in s: if i in letters: return i else: letters.add(i) |
set型変数lettersを用意。
sの文字列がlettersに既にあれば戻り値とする。
sの文字列がlettersになければlettersに加える。
メモ・参考・感想
前:300. Longest Increasing Subsequence
コメント