首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*’移到串的前部分,前面的非’*’字符后移,但不能改变非’*’字符的先后顺序,函数返回串中字符’*’的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*’移到串的前部分,前面的非’*’字符后移,但不能改变非’*’字符的先后顺序,函数返回串中字符’*’的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函
admin
2019-03-29
56
问题
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://jikaoti.com/ti/Qag7FFFM
0
程序员面试
相关试题推荐
Nowhereinnatureisaluminumfoundfree,owingtoitsalways______withotherelements,mostcommonlywithoxygen.
Supposeyouwishtojointhedanceclubofyouruniversity.Writealetterofapplicationtotheclubto1)tellityoulike
______,amanwhoexpresseshimselfeffectivelyissuretosucceedmorerapidlythanamanwhosecommandoflanguageispoor.
AnE-mailtoaRoommate写给室友的邮件YouaregoingtostudyabroadandshareanapartmentwithJohn,alocalstudent.Writehimane-
RememberNapsterorGrokster?Bothservicesalloweduserstosharecomputerfiles—usuallydigitalmusic—thatinfringedthecopyr
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 比如将二元查找树10
.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
存储过程和函数的区别
在Excel2003中,利用“图表选项”对话框,可以设置或修改图标的()。
IEEE1394是一种并行接口标准。
随机试题
重度医院获得性肺炎,首选抗菌药物为
患肢可抬离床面,但是不能对抗阻力,其肌力为
A.定时服B.睡前服C.饭前服D.饭后服E.空腹服
防止病人坠床,最佳措施是
丁公司是否有权收购本公司股份?为什么?本案例中丁公司收购本公司股份的行为有哪些不符合法律规定之处?法院是否应当支持杨某的主张?为什么?
根据设计要求和规范规定进行试验,记录原始数据和计算结果,并得出试验结论的资料统称为( )。
完善的核算软件能够实现()。
简述我国民法中合同终止的情形。
多媒体技术:指利用计算机将各种媒体(包括文本、图形、声音、动画和视频等)以数字化的方式集成在一起,从而使计算机具有表现、处理、存储多种媒体信息的综合能力。多媒体的特征即信息表现形式的多样化,常见的有文本、图形、图像、声音和视频等多种形式。根据定义,
Inthefirstparagraph,theauthortellsusthatAsiaticlions______Whatimpressedtheauthormostwhenhewenttowatchthe
最新回复
(
0
)