首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*’移到串的前部分,前面的非’*’字符后移,但不能改变非’*’字符的先后顺序,函数返回串中字符’*’的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*’移到串的前部分,前面的非’*’字符后移,但不能改变非’*’字符的先后顺序,函数返回串中字符’*’的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函
admin
2019-03-29
94
问题
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
程序员面试
相关试题推荐
[A]Thatkindofdominancecreatesatensionbetweenpropertyrightsandantitrust(opposingorintendedtorestraintrusts,monop
定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。
删除串中指定的字符
输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下:structListNode{intm_nKey;ListNode*m_pNext;};
将远程服务器中名为“通知”的文件在不下载的情况下进行编辑,修改201教室为303教室,然后直接保存,并在关闭编辑窗口后上传。
在Excel中,函数ABS(ROUND(-1.478,2))的计算结果是()。A.-1.478B.1.48C.-1.48D.1.5
软件设计模块化的目的是()。
IEEE1394是一种并行接口标准。
有个服务器一直没有补丁更新,因为要求他的可用性,问怎么解决这个问题?
某服务团队受客户委托,对其所提供的网络硬件设备进行运维管理。为更好地提供服务,该团队采购~套IT设备管理平台对所运维全网IT资源各项数据进行监控并将各类软硬件资源的状态集中展现出来。该工具的采购体现了运维服务质量的()属性。
随机试题
在冰淇淋的理化指标中,中脂型冰淇淋的总固形物含量大于或等于()%。
梗死为液化性坏死的器官是
年轻恒牙深龋间接盖髓常用的理想的药物为
A.试产B.静脉滴注缩宫素C.阴道助产D.继续待产E.剖宫产患者女性,中骨盆平面狭窄,双顶径达坐骨棘水平或以下,宫口开全1小时,胎心好,其处理方式是
肝素的抗凝作用特点是
下列关于电梯整机验收要求的说法中,正确的有()。
为避免旅游者无意中做出越轨行为和触犯法律,导游人员要对其无意中表现出的这类行为有针对性地给予()。
坚持以人为本,要始终把()作为党和国家一切工作的出发点和落脚点。
以德为先,首要的是提高干部的党性修养,________是要解决党员干部的信仰问题,而关键之处在于通过积极有效的载体化虚为实,________。填入画横线部分最恰当的一项是:
3岁前的思维主要是()
最新回复
(
0
)