這里寫目錄標題
- 一、387. 字符串中的第一個唯一字符
- 二、1189. “氣球” 的最大數量
- 三、1221. 分割平衡字符串
一、387. 字符串中的第一個唯一字符
簡單
給定一個字符串 s ,找到 它的第一個不重復的字符,并返回它的索引 。如果不存在,則返回 -1 。
示例 1:
輸入: s = “leetcode”
輸出: 0
示例 2:
輸入: s = “loveleetcode”
輸出: 2
示例 3:
輸入: s = “aabb”
輸出: -1
def test(s):top=[]dic={}for i in s:if i not in dic:dic[i]=1top.append(i)else:dic[i]+=1if i in top:top.remove(i)if len(top)==0:return -1else:return s.index(top[0])s="leetcode"
print(test(s))
二、1189. “氣球” 的最大數量
提示
簡單
給你一個字符串 text,你需要使用 text 中的字母來拼湊盡可能多的單詞 “balloon”(氣球)。
字符串 text 中的每個字母最多只能被使用一次。請你返回最多可以拼湊出多少個單詞 “balloon”。
def fn1(text, balloon):cnt = Counter(text)target = Counter(balloon)return min(cnt[k] // target[k] for k in target)text = "nlaebolko"
balloon = "balloon"
print(fn1(text, balloon))
三、1221. 分割平衡字符串
提示
簡單
平衡字符串 中,‘L’ 和 ‘R’ 字符的數量是相同的。
給你一個平衡字符串 s,請你將它分割成盡可能多的子字符串,并滿足:
每個子字符串都是平衡字符串。
返回可以通過分割得到的平衡字符串的 最大數量 。
示例 1:
輸入:s = “RLRRLLRLRL”
輸出:4
解釋:s 可以分割為 “RL”、“RRLL”、“RL”、“RL” ,每個子字符串中都包含相同數量的 ‘L’ 和 ‘R’ 。
示例 2:
輸入:s = “RLRRRLLRLL”
輸出:2
解釋:s 可以分割為 “RL”、“RRRLLRLL”,每個子字符串中都包含相同數量的 ‘L’ 和 ‘R’ 。
注意,s 無法分割為 “RL”、“RR”、“RL”、“LR”、“LL” 因為第 2 個和第 5 個子字符串不是平衡字符串。
示例 3:
輸入:s = “LLLLRRRR”
輸出:1
解釋:s 只能保持原樣 “LLLLRRRR” 。
無腦走棧的操作,思路:
循環字符串s
當棧為空或者棧頂元素等于當前元素時,入棧
否則出棧
每次循環結束如果棧內為空表示找到了一個符合條件,結果+1
最終返回結果ret即可
def Solution(s):ret=0stack=[]for i in s:if not stack or stack[-1]==i:stack.append(i)else:stack.pop()if not stack:ret+=1return rets = "RLRRRLLRLL"
print(Solution(s))