首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*’移到串的前部分,前面的非’*’字符后移,但不能改变非’*’字符的先后顺序,函数返回串中字符’*’的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函
2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符’*’移到串的前部分,前面的非’*’字符后移,但不能改变非’*’字符的先后顺序,函数返回串中字符’*’的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函
admin
2019-03-29
77
问题
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
YouhavereceivedaletterfromSophia.Sheexpressedheradmirationformicro-bloggingandwonderedwhetheritcanreplacebook
Individualsandbusinesseshavelegalprotectionforintellectualpropertytheycreateandown.Intellectualproper【C1】______fro
输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:8/\610
Remoting简介
不开辟新空间完成字符串的逆序
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”Theyarestudents.”和”aeiou”,则删除之后的第一个字符串变成”Thyrstdnts.”。
将文档中的“父亲”全部替换为“爸爸”。
路由器的主要作用是()。
在Excel2003的单元格A2中有数值型数据10,要在相邻的单元格中利用填充柄填充自动加1的序列,正确的操作是()。
随机试题
论证是由论题、论据和_______三个要素构成的。
Ifyoudonotuseyourarmsoryourlegsforsometime,theybecomeweak:whenyoustartusingthemagain,theyslowlybecomest
辛夷入汤剂宜
女,26岁,0-0-1-0,妊娠38周,中度妊高征孕妇,因胎膜早破入院,入院时血压21.3/14.6kPa(160/110mmHg),尿蛋白(+),宫缩强,总产程2小时50分钟。产后检查胎盘胎膜完整,阴道与宫颈裂伤处经修补阴道内仍有阵阵暗红色血流出伴有血块
A.共价键B.氢键C.离子一偶极和偶极一偶极相互作用D.范德华引力E.电荷转移复合物抗疟药氯喹插入到疟原虫的。DNA碱基对之间的作用,形成的主要键合类型是()。
预制构件的吊环,必须采用:[2000年第32题]
在第三版巴塞尔协议中,新引入的用来反映商业银行长期流动性水平的指标是()。[2013年11月真题]
居民消费水平是指居民在物质产品和劳务的消费过程中,对满足人民生存、发展和享受需要方面所达到的程度。反映居民消费水平的主要指标有()。
为了区分员工的绩效水平,很多企业往往会将最终的绩效考评结果划分为不同的等级。从具体的划分方法来看,可以分为()。
思维和存在的关系问题之所以是哲学的基本问题,原因包括()。
最新回复
(
0
)