首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*’移到串的前部分,前面的非’*’字符后移,但不能改变非’*’字符的先后顺序,函数返回串中字符’*’的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*’移到串的前部分,前面的非’*’字符后移,但不能改变非’*’字符的先后顺序,函数返回串中字符’*’的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函
admin
2019-03-29
39
问题
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
公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行(排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的
整理收藏夹重新命名“新闻”子文件夹为“我的新闻”。
更改邮件到达后应用规则“若发件人包含‘mary@sina.com’转发到wangtao@sina.com”为应用规则“若发件人包含‘mary@sina.com’转发到wanglong@lnu.edu.cn”。
在【站点管理器】中使用鼠标右键菜单方式,修改FTP站点名为:“video”的站点属性,使“video”的站点“启动过滤”功能,并区分大小写进行过滤。
将回收站中的"应用"文件夹删除。
在PPoint中,超级链接只有在()中起作用。A.幻灯片视图B.幻灯片放映C.幻灯片浏览视图D.大纲视图
在Excel97的某单元格内输入了一个公式后,单元格的显示为"#######",这是由于()。A.所得结果没有意义B.所得结果长度超过了列宽C.公式输入有误D.所得结果被隐藏
下列叙述中,不属于结构化程序设计方法的主要原则的是()。
随机试题
随货物的技术资料,应留存在仓库内。
已知某换热器采用逆流换热方式,热流体量mh=1000kg/h、其恒压比热容cph=4kJ/(kg.K)且为常数、入口温度t1=300℃、换热后出口温度t2=150℃;另一冷流体入口温度t3=110℃、换热后出口温度t4=250℃,换热过程传热系数K=100
Whenapencilispartlyinaglassofwater,itlooksasifit______.
下列哪一项不属于泻下剂之适应证
下列选项中,不属于接触性皮炎特征的是()。
下列关于律师执业行为规范的表述哪一项是不正确的?()
著名的下草湾人文化遗址和项王故里等古迹,均位于江苏()。
(1)a+b+c=0;(2)
设A是n×m矩阵,B是m×n矩阵(n<m),且AB=E.证明:B的列向量组线性无关.
算法的复杂度主要包括【】复杂度和空间复杂度。
最新回复
(
0
)