北京网站建设价格便宜音乐接单推广app平台
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步
目录
- 3/10 2269. 找到一个数字的 K 美丽值
- 3/11 2012. 数组美丽值求和
- 3/12 3305. 元音辅音字符串计数 I
- 3/13 3306. 元音辅音字符串计数 II
- 3/14 3340. 检查平衡字符串
- 3/15 3110. 字符串的分数
- 3/16
3/10 2269. 找到一个数字的 K 美丽值
依次判断
def divisorSubstrings(num, k):""":type num: int:type k: int:rtype: int"""n=len(str(num))cur = numMOD = 10**kans=0for i in range(n-k+1):v = cur%MODif v!=0 and num%v==0:ans+=1cur//=10return ans
3/11 2012. 数组美丽值求和
maxl[i]记录从0~i的最大值 minr[i]记录从i~n的最小值
对于nums[x] 如果maxl[x-1]<nums[x]<minr[x+1]则美丽值为2
def sumOfBeauties(nums):""":type nums: List[int]:rtype: int"""n=len(nums)maxl=[0]*nminr=[0]*nmaxl[0]=nums[0]minr[-1]=nums[-1]for i in range(1,n):maxl[i]=max(maxl[i-1],nums[i])minr[n-1-i]=min(minr[n-i],nums[n-1-i])ans = 0for i in range(1,n-1):if maxl[i-1]<nums[i] and nums[i]<minr[i+1]:ans+=2elif nums[i-1]<nums[i] and nums[i]<nums[i+1]:ans+=1return ans
3/12 3305. 元音辅音字符串计数 I
恰好k个 可以看作至少k+1个 减去 至少k个
双指针
tag用来记录元音字母出现次数
def countOfSubstrings(word, k):""":type word: str:type k: int:rtype: int"""def func(k):l=0ans = 0curk = 0tag = {}for w in word:if w in "aeiou":tag[w] = tag.get(w,0)+1else:curk+=1while len(tag)==5 and curk>=k:lw = word[l]if lw in "aeiou":tag[lw]-=1if tag[lw]==0:del tag[lw]else:curk-=1l+=1ans+=lreturn ansreturn func(k)-func(k+1)
3/13 3306. 元音辅音字符串计数 II
恰好k个 可以看作至少k+1个 减去 至少k个
双指针
tag用来记录元音字母出现次数
def countOfSubstrings(word, k):""":type word: str:type k: int:rtype: int"""def func(k):l=0ans = 0curk = 0tag = {}for w in word:if w in "aeiou":tag[w] = tag.get(w,0)+1else:curk+=1while len(tag)==5 and curk>=k:lw = word[l]if lw in "aeiou":tag[lw]-=1if tag[lw]==0:del tag[lw]else:curk-=1l+=1ans+=lreturn ansreturn func(k)-func(k+1)
3/14 3340. 检查平衡字符串
将奇偶位置的数值相减 判断最后差值是否为0
def isBalanced(num):""":type num: str:rtype: bool"""cur=0n=len(num)for i in range(n):if i%2:cur+=int(num[i])else:cur-=int(num[i])return False if cur else True
3/15 3110. 字符串的分数
按要求依次计算
def scoreOfString(s):""":type s: str:rtype: int"""n=len(s)ans = 0for i in range(n-1):ans += abs(ord(s[i+1])-ord(s[i]))return ans
3/16