首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*’移到串的前部分,前面的非’*’字符后移,但不能改变非’*’字符的先后顺序,函数返回串中字符’*’的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*’移到串的前部分,前面的非’*’字符后移,但不能改变非’*’字符的先后顺序,函数返回串中字符’*’的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函
admin
2019-03-29
123
问题
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*’移到串的前部分,前面的非’*’字符后移,但不能改变非’*’字符的先后顺序,函数返回串中字符’*’的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函数并返回值为5。(要求使用尽量少的时间和辅助空间)
选项
答案
int change(char *str) /* 这个算法并不高效,从后向前搜索效率要高些 */ { int count = 0; /* 记录串中字符’*’的个数 */ for(int i=0, j=0; str[i]; i++) /* 重串首开始遍历 */ { if(str[i]==’*’){ /* 遇到字符’*’ */ for(j=i-1; str[j]!=’*’&&j>=0; j--) /* 采用类似插入排序的思想,将*前面 */ str[j+1]=str[j]; /* 的非*字符逐个后移,直到遇到*字符 */ str[j+1] = ’*’; count++; } } return count; } int main(int argc, char* argv[]) { char str[] = "ab**cd**e*12"; printf("str1=%s\n", str); printf("str2=%s, count=%d", str, change(str)); return getchar(); } // 终于得到一个比较高效的算法,一个网友提供,应该和金山面试官的想法一致。算法如下: int change(char *str) { int i,j=strlen(str)-1; for(i=j; j>=0; j--) { if(str[i]!=’*’){ i--; }else if(str[j]!=’*’){ str[i] = str[j]; str[j] = ’*’; i--; } } return i+1; }
解析
转载请注明原文地址:https://kaotiyun.com/show/cxmZ777K
0
程序员面试
相关试题推荐
ThepublicationofPM2.5datahasbecomeanationalhottopic.Theenvironmentinstituteplanstoholdarelevantlecture.AsC
Supposeyouwishtojointhedanceclubofyouruniversity.Writealetterofapplicationtotheclubto1)tellityoulike
Signslike"Pleaseratemefivestars"pointtoagrowingproblemwithbusinessesintheon-demandeconomyofapp-basedservices
将一整数逆序后放入一数组中(要求递归实现)
数据库的优化设计?
设置拨号连接属性使得拨号网络连接出现空闲时间10分钟自动挂断。
自定义工具栏上的按钮添加“自动索引”按钮,删除“查找”按钮。
请打开"计算器"应用程序,利用科学型模式将十六进制的ABC转换为二进制。
在Word97中,设定打印纸张大小时,应当使用的命令是()。A.文件菜单中的“打印预览”命令B.文件菜单中的“页面设置”命令C.视图菜单中的“工具栏”命令D.视图菜单中的“页面”命令
工作表行存放的是各地区每月的销售数量,请按一月份销售情况由低至高进行排序。
随机试题
根据《公安机关督察条例》的规定,督察机构在督察工作中发现公安机关的人民警察违法违纪的,可以作出()的决定。
简述新教育运动中新学校的共同特点。
男性,63岁,因确诊为尿毒症,行每周三次规律血液透析9年,近半年始出现双手麻木、疼痛、运动障碍
A.红色B.黄色C.蓝色D.绿色在人工作业的库房储存药品,按质量状态实行色标管理不合格药品的色标是()。
某年金,前4年无流入,后5年每年年初流入300万元,假设年利率为10%,其现值为()万元。
衡量银行规模的重要综合性指标是()。
公文正文后带有多个附件的,序号用阿拉伯数字标注,并对齐,附件名称后不加标点。()
A、 B、 C、 B(A)不要因为somemorepeople与anyone有关就选择此项。(B)针对是否有人理解起来会有困难的提问。做出了“用语过于复杂.所以可能会如此”的回答,从意思上看,前后衔接顺畅。(C)tr
A.holeB.utteringC.crackD.quietE.betrayedF.flatteredG.concentrateH.speakingI.wanderJ.noisyKalthough
Changesinthewaypeoplelivebringaboutchangesinthejobsthattheydo.Moreandmorepeopleliveintownsandcitiesinste
最新回复
(
0
)