首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*’移到串的前部分,前面的非’*’字符后移,但不能改变非’*’字符的先后顺序,函数返回串中字符’*’的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*’移到串的前部分,前面的非’*’字符后移,但不能改变非’*’字符的先后顺序,函数返回串中字符’*’的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函
admin
2019-03-29
127
问题
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
程序员面试
相关试题推荐
Americanschoolsaren’texactlyfrozenintime,butconsideringthepaceofchangeinotherareasoflife,ourpublicschoolste
求最大连续递增数字串(如“ads3sl456789DF3456ld345AA”中的“456789”)
定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。
输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:structListNode{intm_nKey;ListNode*m_pNext;};
设置拨号连接属性使得拨号网络连接出现故障时候自动重拨间隔2分钟。
保存当前浏览的www.sina.com的网页到“D:\网页保存”文件夹,保存名称是新浪网页文字版,保存类型是txt。
关于在网页中加入书签来实现跳转的说法,正确的是______。A.可以实现页面间的跳转B.可以实现同一页面中不同位置的跳转C.在页面编辑时,需要使用“Insert”中的“NamedAnchor”D.只能跳转到其它页面的页首
Office2000Office2000中文版中文版用()实现A.插入符号B.并排字符C.组合字符D.首字下沉
在foxpro中,要浏览多个数据库的字段,以下说法中正确的是()并允许进行字段的修改。A.使用listfields命令 B.browsefields命令C.前两者都不对 D.不能在command命令窗口中实现
工作表行存放的是各地区每月的销售数量,请按一月份销售情况由低至高进行排序。
随机试题
晶体三极管的噪声来源主要有()、()、分配噪声和1/f噪声。
社会主义道德建设的核心是为人民服务,为人民服务体现着
肿瘤压迫导致局部水肿的原因是
患者,女,59岁。农民。因“多饮、多尿3年,加重1年,意识不清4小时”急诊入院。查体温37.5℃,脉搏110次/分,呼吸24次/分,血压108/75mmHg。血糖28.50mmol/L,血钠152.0mmol/L,血钾4.87mmol/L,血氯122mmo
以下各组物权中,均属于用益物权的是()。
菲德罗河是一条依次流经甲乙丙丁四国的多国河流。1966年,甲乙丙丁四国就该河流的航行事项缔结条约,规定缔约国船舶可以在四国境内的该河流中通航。2005年底,甲国新当选的政府宣布:因乙国政府未能按照条约的规定按时维修其境内航道标志,所以甲国不再受上述条约的拘
在建筑电气工程施工程序安排中,关于布线系统的施工程序说法正确的是()。
一名同学参加科普知识竞赛,需回答三个问题,竞赛规则规定:答对第一、二、三个问题分别得100分、100分、200分,答错得0分,假设这位同学答对第一、二、三个问题的概率分别为0.8、0.7、0.6,且各题答对与否相互之间没有影响,则这名同学得300分的概率为
在嵌入式应用系统中,目前使用的触摸屏主要有两种:一种是___________【65】式触摸屏(俗称软屏),结构简单,价格较低;另一种是___________【66】式触摸屏(俗称硬屏),其结构相对复杂,价格较高。
实体完整性要求主属性不能为空值,这一点可以通过()来保证。
最新回复
(
0
)