网易首页 > 网易号 > 正文 申请入驻

2023-07-29:给你一个由数字组成的字符串 s,返回 s 中独特子字

0
分享至

2023-07-29:给你一个由数字组成的字符串 s,返回 s 中独特子字符串数量。

其中的每一个数字出现的频率都相同。

答案2023-07-29:

大体步骤如下:

1.初始化变量base为固定值1000000007,用于计算哈希码。

2.创建一个空的哈希集合set,用于存储独特子字符串的哈希码。

3.创建一个长度为10的整数数组cnts,用于记录数字出现的频率。

4.循环遍历字符串s的每个字符,使用变量l来表示当前子字符串的起始位置。

5.在循环开始时,将数组cnts的所有元素初始化为0。

6.初始化哈希码hashCode为0。

7.初始化变量curVal、maxCnt、maxKinds和allKinds为0,分别表示当前数字值、最大频率、最大频率的数字种类数和所有数字种类数。

8.开始内层循环,依次遍历从l位置开始的子字符串的每个字符,使用变量r表示当前字符的索引。

9.将当前字符转换为整数curVal,同时计算哈希码hashCode,基于base的乘法运算,并加上curVal+1。

10.将cnts[curVal]加1表示当前数字curVal的频率增加了一次。

11.如果cnts[curVal]等于1,说明新出现了一种数字,将allKinds加1,表示所有数字的种类数增加了一种。

12.如果cnts[curVal]大于maxCnt,表示当前数字的频率超过了之前的最大频率,将maxCnt更新为cnts[curVal],并将maxKinds重置为1,表示找到一种新的最大频率数字。

13.如果cnts[curVal]等于maxCnt,表示当前数字的频率和最大频率相同,将maxKinds加1,表示累计的最大频率数字种类数增加了一种。

14.若maxKinds等于allKinds,表示当前子字符串中每种数字都出现了最大频率次数,将当前子字符串的哈希码hashCode添加到集合set中。

15.循环结束后,更新l的值,进入下一个子字符串的计算。

16.返回集合set的大小,即独特子字符串的数量。

17.在main函数中,定义字符串s为"11223",调用equalDigitFrequency函数计算结果,并打印输出。

时间复杂度:

该算法的时间复杂度为O(N^2),其中N是字符串s的长度。外层循环遍历字符串s的每个字符,内层循环遍历以每个字符为起始位置的子字符串。因此,总的时间复杂度可以近似为N*(N+1)/2,即O(N^2)。

空间复杂度:

该算法的空间复杂度为O(1),因为除了常数个变量之外,没有额外使用大量的空间。集合set的空间取决于独特子字符串的数量,但最坏情况下独特子字符串的数量是固定的,最多只有10个数字种类。因此,可以看作是常数级的空间复杂度,即O(1)。

go完整代码如下:

packagemain
import(
"fmt"
"strconv"
)
funcequalDigitFrequency(sstring)int{
base:=int64(1000000007)
set:=make(map[int64]bool)
cnts:=make([]int,10)
forl:=0;lfori:=0;i<10;i++{
cnts[i]=0
}
hashCode:=int64(0)
curVal,maxCnt,maxKinds,allKinds:=0,0,0,0
forr:=l;rcurVal,_=strconv.Atoi(string(s[r]))
hashCode=hashCode*base+int64(curVal+1)
cnts[curVal]++
ifcnts[curVal]==1{
allKinds++
}
ifcnts[curVal]>maxCnt{
maxCnt=cnts[curVal]
maxKinds=1
}elseifcnts[curVal]==maxCnt{
maxKinds++
}
ifmaxKinds==allKinds{
set[hashCode]=true
}
}
}
returnlen(set)
}
funcmain(){
s:="11223"
result:=equalDigitFrequency(s)
fmt.Println(result)
}

rust完整代码如下:

usestd::collections::HashSet;
fnequal_digit_frequency(s:&str)->usize{
letbase:i64=1_000_000_007;
letmutset:HashSet=HashSet::new();
letmutcnts:[i64;10];
letss=s.as_bytes();
forlin0..ss.len(){
cnts=[0;10];
letmuthash_code=0;
letmutcur_val;
let(mutmax_cnt,mutmax_kinds,mutall_kinds)=(0,0,0);
letmutr=l;
whilercur_val=ss[r]asi64-'0'asi64;
hash_code=(hash_codeasi64).wrapping_mul(baseasi64)+cur_val+1;
cnts[cur_valasusize]+=1;
ifcnts[cur_valasusize]==1{
all_kinds+=1;
}
ifcnts[cur_valasusize]>max_cnt{
max_cnt=cnts[cur_valasusize];
max_kinds=1;
}elseifcnts[cur_valasusize]==max_cnt{
max_kinds+=1;
}
ifmax_kinds==all_kinds{
set.insert(hash_code);
}
r+=1;
}
}
set.len()
}
fnmain(){
lets="11223";
letresult=equal_digit_frequency(s);
println!("{}",result);
}

c++完整代码如下:

#include
#include
#include
intequalDigitFrequency(std::strings){
constlonglongbase=1000000007;
std::unordered_setset;
std::vectorcnts(10,0);
for(intl=0;lstd::fill(cnts.begin(),cnts.end(),0);
longlonghashCode=0;
intcurVal,maxCnt=0,maxKinds=0,allKinds=0;
for(intr=l;rcurVal=s[r]-'0';
hashCode=hashCode*base+curVal+1;
cnts[curVal]++;
if(cnts[curVal]==1){
allKinds++;
}
if(cnts[curVal]>maxCnt){
maxCnt=cnts[curVal];
maxKinds=1;
}
elseif(cnts[curVal]==maxCnt){
maxKinds++;
}
if(maxKinds==allKinds){
set.insert(hashCode);
}
}
}
returnset.size();
}
intmain(){
std::strings="11223";
intresult=equalDigitFrequency(s);
std::cout<
return0;
}

c完整代码如下:

#include
#include
#defineBASE1000000007
#defineMAX_DIGITS10
intequalDigitFrequency(char*s){
unsignedlonglongset[MAX_DIGITS]={0};
intcnts[MAX_DIGITS]={0};
intsetSize=0;
for(intl=0;s[l]!='\0';l++){
for(inti=0;icnts[i]=0;
}
unsignedlonglonghashCode=0;
intcurVal,maxCnt=0,maxKinds=0,allKinds=0;
for(intr=l;s[r]!='\0';r++){
curVal=s[r]-'0';
hashCode=hashCode*BASE+curVal+1;
cnts[curVal]++;
if(cnts[curVal]==1){
allKinds++;
}
if(cnts[curVal]>maxCnt){
maxCnt=cnts[curVal];
maxKinds=1;
}
elseif(cnts[curVal]==maxCnt){
maxKinds++;
}
if(maxKinds==allKinds){
boolexists=false;
for(inti=0;iif(set[i]==hashCode){
exists=true;
break;
}
}
if(!exists){
set[setSize++]=hashCode;
}
}
}
}
returnsetSize;
}
intmain(){
chars[]="11223";
intresult=equalDigitFrequency(s);
printf("%d\n",result);
return0;
}

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
闭嘴就对了!卢麒元:到2032年,含政治军队的东亚共同体就会成立

闭嘴就对了!卢麒元:到2032年,含政治军队的东亚共同体就会成立

瑜说还休
2024-05-02 12:10:52
官宣了!国米正式易主,国米苏宁时代终结,球迷评论沸腾了

官宣了!国米正式易主,国米苏宁时代终结,球迷评论沸腾了

侧身凌空斩
2024-05-22 18:15:11
宁夏5月以来平均气温为1961年以来同期最高 高温破纪录

宁夏5月以来平均气温为1961年以来同期最高 高温破纪录

财联社
2024-05-23 14:28:09
与汪峰离婚仅半年,再看章子怡如今的处境,张艺谋的话有人信了

与汪峰离婚仅半年,再看章子怡如今的处境,张艺谋的话有人信了

圈里的甜橙子
2024-05-22 17:01:49
莱西坠机后伊朗重选总统,内贾德参选希望渺茫,2人成为大热门

莱西坠机后伊朗重选总统,内贾德参选希望渺茫,2人成为大热门

坠入二次元的海洋
2024-05-23 04:14:11
全票通过,美政客否认台湾是中国的,美专家:或许中国正在准备!

全票通过,美政客否认台湾是中国的,美专家:或许中国正在准备!

一口咸蛋黄emo呀
2024-05-23 11:25:20
红星观察丨聘任制公务员高薪引关注 多地回应满足年限且考核优秀可转委任制

红星观察丨聘任制公务员高薪引关注 多地回应满足年限且考核优秀可转委任制

红星新闻
2024-05-22 15:51:15
阿不都沙拉木:自己总决赛打的跟屎一样,夏天好好努力训练

阿不都沙拉木:自己总决赛打的跟屎一样,夏天好好努力训练

懂球帝
2024-05-23 09:40:15
“倒水”模式又双叒叕来了!惠州多地暴雨预警生效中

“倒水”模式又双叒叕来了!惠州多地暴雨预警生效中

南方都市报
2024-05-23 14:20:18
利比里亚总统多伊被处决:先砍掉十根手指,又被处以宫刑,疼死

利比里亚总统多伊被处决:先砍掉十根手指,又被处以宫刑,疼死

扶苏聊历史
2024-05-13 16:44:57
520翻车现场:女子收了礼物到酒店后反悔,男的光猪跑出门拖回房

520翻车现场:女子收了礼物到酒店后反悔,男的光猪跑出门拖回房

挪威森林
2024-05-22 04:22:44
穆帅逆袭!5冠豪门换帅!竞争曼联,送2亿转会费,瓜帅五连冠悬了

穆帅逆袭!5冠豪门换帅!竞争曼联,送2亿转会费,瓜帅五连冠悬了

阿泰希特
2024-05-23 11:17:47
好大的雨!广州启动暴雨Ⅲ级应急响应,局地挂“红警”

好大的雨!广州启动暴雨Ⅲ级应急响应,局地挂“红警”

金羊网
2024-05-23 13:04:17
“外婆说我买的都是怪衣服”宝妈给女儿穿的衣服太成人化引起热议

“外婆说我买的都是怪衣服”宝妈给女儿穿的衣服太成人化引起热议

户外钓鱼哥阿勇
2024-05-21 17:08:09
官方:欧足联确定2026、2027年欧冠等赛事决赛举办地

官方:欧足联确定2026、2027年欧冠等赛事决赛举办地

直播吧
2024-05-22 20:40:14
刘晓庆在豪宅里穿红裙和小鲜肉依偎在一起,相差几十岁,如同龄人

刘晓庆在豪宅里穿红裙和小鲜肉依偎在一起,相差几十岁,如同龄人

宋若时尚搭
2024-05-22 14:42:17
费翔母亲毕丽娜:传言是大陆特工,17岁去台湾,两任丈夫身份特殊

费翔母亲毕丽娜:传言是大陆特工,17岁去台湾,两任丈夫身份特殊

阿胡
2024-05-20 12:44:22
突发!小S突然出售上海豪宅?汪小菲再出大招,要回豪宅易如反掌?

突发!小S突然出售上海豪宅?汪小菲再出大招,要回豪宅易如反掌?

小咪侃娱圈
2024-05-23 11:40:55
2003年,张柏芝和陈小春同游曼谷,结果两人被媒体拍摄下来

2003年,张柏芝和陈小春同游曼谷,结果两人被媒体拍摄下来

小白兔趣闻
2024-03-28 20:32:17
中美谈判大门关闭,美智库撂话,两岸统一,也不让大陆得到台积电

中美谈判大门关闭,美智库撂话,两岸统一,也不让大陆得到台积电

东方寻史
2024-05-22 17:42:39
2024-05-23 15:30:44
moonfdd
moonfdd
福大大架构师每日一题
397文章数 7关注度
往期回顾 全部

科技要闻

英伟达狂飙 黄仁勋说要开启"新的工业革命"

头条要闻

本田车被撞 车主维修期每天花3百租宝马要肇事者负担

头条要闻

本田车被撞 车主维修期每天花3百租宝马要肇事者负担

体育要闻

张氏父子的一场大梦

娱乐要闻

大S儿子被学校退学,张兰称孙子没人管

财经要闻

宗馥莉接棒100天,钟睒睒站在大门外

汽车要闻

上汽大通大家7超混/大家9超混将于6月7日正式上市

态度原创

旅游
本地
数码
公开课
军事航空

旅游要闻

日本航空飞机在羽田机场地面与其他飞机发生接触

本地新闻

强制措施展铁腕 “交叉执行”勇亮剑

数码要闻

天猫精灵 X6 音响开售:6 单元二分频、天空音布局,首发 369 元

公开课

近视只是视力差?小心并发症

军事要闻

以军继续杰宁攻势 巴武装组织打击以目标

无障碍浏览 进入关怀版