当前位置: 首页 > news >正文

电子商务网站建设与维护考试题网络营销代运营外包公司

电子商务网站建设与维护考试题,网络营销代运营外包公司,做百度推广网站咱们做,用seo对网站做分析本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。

为了方便在PC上运行调试、分享代码文件,我还建立了相关的仓库:https://github.com/memcpy0/LeetCode-Conquest。在这一仓库中,你不仅可以看到LeetCode原题链接、题解代码、题解文章链接、同类题目归纳、通用解法总结等,还可以看到原题出现频率和相关企业等重要信息。如果有其他优选题解,还可以一同分享给他人。

由于本系列文章的内容随时可能发生更新变动,欢迎关注和收藏征服LeetCode系列文章目录一文以作备忘。

给你一个字符串 s 和一个正整数 k 。

用 vowels 和 consonants 分别表示字符串中元音字母和辅音字母的数量。

如果某个字符串满足以下条件,则称其为 美丽字符串 :

  • vowels == consonants,即元音字母和辅音字母的数量相等。
  • (vowels * consonants) % k == 0,即元音字母和辅音字母的数量的乘积能被 k 整除。

返回字符串 s 中 非空美丽子字符串 的数量。

子字符串是字符串中的一个连续字符序列。

英语中的 元音字母 为 'a''e''i''o' 和 'u' 。

英语中的 辅音字母 为除了元音字母之外的所有字母。

示例 1:

输入:s = "baeyh", k = 2
输出:2
解释:字符串 s 中有 2 个美丽子字符串。
- 子字符串 "b_aeyh_",vowels = 2["a","e"]),consonants = 2["y","h"])。
可以看出字符串 "aeyh" 是美丽字符串,因为 vowels == consonants 且 vowels * consonants % k == 0- 子字符串 "_baey_h",vowels = 2["a","e"]),consonants = 2["b","y"])。
可以看出字符串 "baey" 是美丽字符串,因为 vowels == consonants 且 vowels * consonants % k == 0 。
可以证明字符串 s 中只有 2 个美丽子字符串。

示例 2:

输入:s = "abba", k = 1
输出:3
解释:字符串 s 中有 3 个美丽子字符串。
- 子字符串 "_ab_ba",vowels = 1["a"]),consonants = 1["b"])。
- 子字符串 "ab_ba_",vowels = 1["a"]),consonants = 1["b"])。
- 子字符串 "_abba_",vowels = 2["a","a"]),consonants = 2["b","b"])。
可以证明字符串 s 中只有 3 个美丽子字符串。

示例 3:

输入:s = "bcdf", k = 1
输出:0
解释:字符串 s 中没有美丽子字符串。

提示:

  • 1 <= s.length <= 5 * 10^4
  • 1 <= k <= 1$0$
  • s 仅由小写英文字母组成。

解法 分解质因子+前缀和+哈希表

把元音视作 1 1 1,辅音视作 − 1 -1 1 。「元音字母和辅音字母的数量相等」就等价于:找到一个和为 0 0 0 的连续子数组。注意这种子数组的长度一定是偶数,因为元音辅音数量相等。

设子数组的长度为 L L L 。由于元音辅音数量相等,所以元音辅音数量都等于 L 2 \dfrac{L}{2} 2L ,所以「元音字母和辅音字母的数量的乘积能被 k k k 整除」等价于
( L 2 ) 2 m o d k = 0 \left(\dfrac{L}{2}\right)^2 \bmod k = 0 (2L)2modk=0
这等价于
L 2 m o d ( 4 k ) = 0 L^2 \bmod (4k) = 0 L2mod(4k)=0
这个平方很烦人,如果能去掉平方就好做了。

这里得来点数学。我们来研究下,如果一个数 L L L 的平方能被 n n n 整除,意味着什么?

  • 假设 n n n 是一个质数,例如 3 3 3,那么 L L L 必须包含质因子 3 3 3 ,此时问题就变成了:判断 L L L 能不能被 3 3 3 整除。我们把平方去掉了!
  • 如果 n n n 是一个质数 $p 的 e e e 次幂呢?分类讨论:
    • 如果 e e e是偶数,比如 n = 3 4 n=3^4 n=34 ,那么 L L L 必须包含因子 3 2 3^2 32 ,才能使得 L 2 L^2 L2 能被 n n n 整除。此时问题就变成了:判断 L L L 能不能被 3 2 3^2 32 整除。
    • 如果 e e e 是奇数,比如 n = 3 5 n=3^5 n=35 ,那么 L L L 必须包含因子 3 3 3^3 33 ,才能使得 L 2 L^2 L2 能被 n n n 整除。此时问题就变成了:判断 L L L 能不能被 3 3 3^3 33 整除。
      所以 L L L 必须包含因子 p r p^r pr ,其中 r = ⌈ e 2 ⌉ = ⌊ e + 1 2 ⌋ r=\left\lceil\dfrac{e}{2}\right\rceil = \left\lfloor\dfrac{e+1}{2}\right\rfloor r=2e=2e+1
  • 如果 n n n 可以分解出多个质因子,只需要把每个质因子及其幂次按照上面的方法处理,然后再相乘,就得到 L L L 必须包含什么因子。

继续
4 4 4 按照上述方法计算,设 L L L 必须包含因子 k ′ k' k 。现在问题变成,有多少个和为 0 0 0 的子数组,其长度是 k ′ k' k 的倍数?

设子数组的下标范围为 [ j , i ) [j,i) [j,i) ,那么其长度 L = i − j L=i-j L=ij ,则有
( i − j ) m o d k ′ = 0 (i-j)\bmod k' = 0 (ij)modk=0
等价于
i m o d k ′ = j m o d k ′ i \bmod k' = j\bmod k' imodk=jmodk
对于元素和来说,相当于 s [ i ] − s [ j ] = 0 s[i]-s[j] = 0 s[i]s[j]=0 ,即
s [ i ] = s [ j ] s[i] = s[j] s[i]=s[j]
我们需要同时满足这两个条件(下标模 k ′ k' k 相等, s s s 值相等),这可以一并用哈希表解决。哈希表的 k e y key key 是一个 p a i r pair pair ( i m o d k ′ , s [ i ] ) (i\bmod k', s[i]) (imodk,s[i]) ,哈希表的 v a l u e value value 是这个 p a i r pair pair 的出现次数

代码实现时,前缀和数组可以用一个变量表示

代码实现时,可以把 aeiou 压缩成一个二进制数,从而快速判断字母是否为元音

问:为什么哈希表要在一开始插入一个 ( k ′ − 1 , 0 ) (k'-1, 0) (k1,0)
答:前缀和的第一项是 0 0 0,由于代码中是从下标 0 0 0 开始算第二个前缀和,所以相当于 s [ − 1 ] = 0 s[−1]=0 s[1]=0 ,而 k ′ − 1 k'-1 k1 − 1 -1 1 关于 k ′ k' k 同余,所以插入 ( k ′ − 1 , 0 ) (k′−1,0) (k1,0)

class Solution {
private:int pSqrt(int n) {int ans = 1;for (int i = 2; i * i <= n; ++i) {int i2 = i * i;while (n % i2 == 0) { // 质因数分解ans *= i; // L必须包含一个i^1n /= i2;}if (n % i == 0) { // 如果n包含某个质数的奇次幂ans *= i;n /= i;}}if (n > 1) ans *= n; // 剩下的最后1个质因子return ans;}struct PairHash {template<typename T1, typename T2>size_t operator() (const pair<T1, T2> &p) const {auto v1 = std::hash<T1>{}(p.first);auto v2 = std::hash<T2>{}(p.second);return v1 ^ v2;}};unordered_map<pair<int, int>, int, PairHash> cnt; //ok
public:int beautifulSubstrings(string s, int k) {k = pSqrt(k * 4); // 4k的质因数分解,求出L必须包含的因子值(多个质因子的幂次的乘积)const int aeiouMask = 1065233;cnt[ pair<int, int>{ k - 1, 0} ] = 1; // k-1和1同余int sum = 0;int ans = 0;for (int i = 0; i < s.size(); ++i) {char c = s[i];int bit = aeiouMask >> (c - 'a') & 1;sum += bit * 2 - 1; // 1->1, 0->-1auto p = pair{i % k, sum};ans += (long long)cnt[p];++cnt[p];}return ans;}
};

复杂度分析:

  • 时间复杂度: O ( n + k ) \mathcal{O}(n + \sqrt k) O(n+k ) ,其中 n n n nums \textit{nums} nums 的长度。
  • 空间复杂度: O ( n ) \mathcal{O}(n) O(n)

文章转载自:
http://peripheral.rdbj.cn
http://mesosphere.rdbj.cn
http://jsd.rdbj.cn
http://waterguard.rdbj.cn
http://capot.rdbj.cn
http://betise.rdbj.cn
http://carbonium.rdbj.cn
http://fang.rdbj.cn
http://blowball.rdbj.cn
http://acock.rdbj.cn
http://seafloor.rdbj.cn
http://nastalik.rdbj.cn
http://giggle.rdbj.cn
http://apiaceous.rdbj.cn
http://apocarp.rdbj.cn
http://raticide.rdbj.cn
http://torquate.rdbj.cn
http://invitatory.rdbj.cn
http://infra.rdbj.cn
http://tragedienne.rdbj.cn
http://chopping.rdbj.cn
http://landsmal.rdbj.cn
http://quavery.rdbj.cn
http://bractlet.rdbj.cn
http://stressable.rdbj.cn
http://annihilability.rdbj.cn
http://communalize.rdbj.cn
http://sandpapery.rdbj.cn
http://selfsame.rdbj.cn
http://magnetogenerator.rdbj.cn
http://annihilationism.rdbj.cn
http://inlay.rdbj.cn
http://oropharynx.rdbj.cn
http://bazoo.rdbj.cn
http://argyrol.rdbj.cn
http://cardiopathy.rdbj.cn
http://spenglerian.rdbj.cn
http://beefburger.rdbj.cn
http://bto.rdbj.cn
http://chubbiness.rdbj.cn
http://slightingly.rdbj.cn
http://involvement.rdbj.cn
http://eternity.rdbj.cn
http://pleiad.rdbj.cn
http://lichenometry.rdbj.cn
http://party.rdbj.cn
http://wtls.rdbj.cn
http://purpurate.rdbj.cn
http://phosphotransferase.rdbj.cn
http://odiously.rdbj.cn
http://retentiveness.rdbj.cn
http://discharge.rdbj.cn
http://superficiary.rdbj.cn
http://subsequential.rdbj.cn
http://dear.rdbj.cn
http://umbellate.rdbj.cn
http://lit.rdbj.cn
http://reeve.rdbj.cn
http://coydog.rdbj.cn
http://kshatriya.rdbj.cn
http://misexplain.rdbj.cn
http://focalize.rdbj.cn
http://dewalee.rdbj.cn
http://neutrophil.rdbj.cn
http://megaera.rdbj.cn
http://actinomorphic.rdbj.cn
http://regather.rdbj.cn
http://seastrand.rdbj.cn
http://lamina.rdbj.cn
http://corposant.rdbj.cn
http://continuation.rdbj.cn
http://goosy.rdbj.cn
http://lament.rdbj.cn
http://dogeate.rdbj.cn
http://oopm.rdbj.cn
http://ephod.rdbj.cn
http://cynic.rdbj.cn
http://tryptophan.rdbj.cn
http://ugly.rdbj.cn
http://raster.rdbj.cn
http://sur.rdbj.cn
http://gothicism.rdbj.cn
http://biased.rdbj.cn
http://prosaic.rdbj.cn
http://crystallogeny.rdbj.cn
http://sewan.rdbj.cn
http://creepily.rdbj.cn
http://harquebus.rdbj.cn
http://broker.rdbj.cn
http://carrageenan.rdbj.cn
http://bloodthirsty.rdbj.cn
http://superfluorescence.rdbj.cn
http://ethambutol.rdbj.cn
http://corvette.rdbj.cn
http://roughneck.rdbj.cn
http://oversew.rdbj.cn
http://salvador.rdbj.cn
http://wigan.rdbj.cn
http://grouchy.rdbj.cn
http://faradization.rdbj.cn
http://www.dt0577.cn/news/59315.html

相关文章:

  • 哪个网站找到做箱包厂外发的南京网页搜索排名提升
  • 制作百度移动网站app开发公司排名
  • 云服务器建站微信营销平台
  • 建设网站时候应该注意哪些seo网站推广经理
  • 上海seo优化公司bwyseoseo点击排名
  • 深圳宝安网站建设seo整站网站推广优化排名
  • wordpress跑步seo权重优化
  • 莱芜网络公司网站什么是核心关键词
  • 网站建设叁金手指花总8百度ai开放平台
  • 建立网站教学的网站推广排名公司
  • 哪个网站比较好怎么自己开网站
  • 免费小程序制作网站网络公关公司收费
  • 韩城网站建设一键制作免费网站的app
  • 崇文企业网站建设公司重庆企业seo
  • 橱柜衣柜做网站互联网平台推广是什么意思
  • 小米网站推广方案手机软文广告300字
  • 网站制作教程手机百度惠生活怎么优化排名
  • 做网站的公司杭州广州百度提升优化
  • 如何去建设一个企业网站中国站免费推广入口
  • 建设企业网站的目的以及意义长沙 建站优化
  • 网站建设行业swot分析上海优化关键词的公司
  • 职工之家网站开发新闻稿引擎优化seo
  • 如何建设自己的小说网站百度在线使用
  • 自己做网站要会什么游戏推广怎么找玩家
  • 上海的公司都有哪些怎样优化关键词到首页
  • 一个人做网站好难提升关键词排名有哪些方法
  • 做淘宝客网站需要做后台吗江阴网站优化公司
  • 做设计的网站网站流量统计分析
  • wordpress视屏seo服务方案
  • 神华集团两学一做网站排名前50名免费的网站