首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*’移到串的前部分,前面的非’*’字符后移,但不能改变非’*’字符的先后顺序,函数返回串中字符’*’的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*’移到串的前部分,前面的非’*’字符后移,但不能改变非’*’字符的先后顺序,函数返回串中字符’*’的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函
admin
2019-03-29
63
问题
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
程序员面试
相关试题推荐
WhenIseeclients,thisisthequestionthatI’maskedthemost.Ifyou’reinapublicplace,lookaround.【F1】Nearlyeveryone
Americanschoolsaren’texactlyfrozenintime,butconsideringthepaceofchangeinotherareasoflife,ourpublicschoolste
输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:因此返回true。如果输入7、4、6、5,没有哪棵树的后序遍历
输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1,-2,3,10,-4,7,2,-5,和最大的子数组为3,10,
C#中,stringstr=null与stringstr=””,请尽量用文字说明区别。(要点:说明详细的内存空间分配)
判断单链表中是否存在环(网上说的笔试题)
保存当前浏览的www.sina.com的网页到“D:\网页保存”文件夹,保存名称是新浪网页文字版,保存类型是txt。
使用.NETPassport向导注册MSN帐户,姓名为李明,邮件的地址为liming@hotmail.com,密码为123456lm。
重新发送“已发送邮件”文件夹下的,主题为“生日聚会”的邮件,并将收件人地址更改为“liujian@lnu.edu.cn”。
计算机通信的两个最主要的指标是()A.数据传输速率和误码率B.衰减和失效率C.高效率和正确率D.硬件利用率和软件利用率
随机试题
下列属于软质饮食的是()。
被保险人40岁时购买延期定期年金,约定60岁起支付年金,给付期限为10年。当被保险人在72岁死亡时,保险公司( )。
下列各项中,应当征收城镇土地使用税的有()。
“故人西辞黄鹤楼,_______。”这是_______代诗人_______的诗句,其中“故人”指_______。这两句诗点明了送别的_______、_______、_______。
有关保证期间的下列表述中,正确的是()。
关于结构化程序设计原则和方法的描述错误的是()。
在考生文件夹下,“samp1.accdb”数据库文件中已建立三个关联表对象(名为“职工表”、“物品表”和“销售业绩表”)、一个表对象(名为“tTemp”)、一个窗体对象(名为“frest”)和一个宏对象(名为“mTest”)。试按以下要求,完成表和窗体的各
Inmanyrespects,KatsuraOkiyamaisatypicalJapanesewomaninher20s.SheenjoysspendingtimewithherfriendsandlovesDi
•ReadtheminutesbelowfromaHealthandSafetycommitteemeeting.•ChoosethecorrectwordtofilleachgapfromA,BorCon
Untilrecently,themedicalcommunitybelievedthatmosthearinglosswascausedbyhearcellsintheeardegradingasweage.B
最新回复
(
0
)