10 2012 档案

摘要:题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”, 则删除之后的第一个字符串变成”Thy r stdnts.”。我写的代码,已通过测试,复杂度高。#include<iostream>using namespace std;char *deletestr(char *str1,char *str2){ char *str=new char[strlen(str1)]; int i=0; while(*str1!='\0') { char *matchstr=str2;int flag= 阅读全文
posted @ 2012-10-27 23:57 代码改变未来 阅读(316) 评论(0) 推荐(0) 编辑
摘要:我们以三个字符abc 为例来分析一下求字符串排列的过程。首先我们固定第一个字符a,求后面两个字符bc 的排列。当两个字符bc 的排列求好之后,我们把第一个字符a 和后面的b交换,得到bac,接着我们固定第一个字符b,求后面两个字符ac 的排列。现在是把c 放到第一位置的时候了。记住前面我们已经把原先的第一个字符a 和后面的b 做了交换,为了保证这次c 仍然是和原先处在第一位置的a 交换,我们在拿c 和第一个字符交换之前,先要把b 和a 交换回来。在交换b 和a 之后,再拿c 和处在第一位置的a 进行交换,得到cba。我们再次固定第一个字符c,求后面两个字符b、a 的排列。既然我们已经知道怎么求 阅读全文
posted @ 2012-10-23 21:43 代码改变未来 阅读(264) 评论(0) 推荐(0) 编辑
摘要:定义字符串的左旋转操作:把前面若干个移动到尾部。如把字符串 abcdef左旋转 2位得到字符串 cdefab。请实现字符串左旋转的函数要求时间对长度为 n的字符串操作复杂度为 O(n),辅助内存为 O(1)。分析:把字符串看成有两段组成的,记位XY。左旋转相当于要把字符串XY 变成YX。我们先在字符串上定义一种翻转的操作,就是翻转字符串中字符的先后顺序。把X 翻转后记为XT。显然有(XT)T=X。我们首先对X 和Y 两段分别进行翻转操作,这样就能得到XTYT。接着再对XTYT 进行翻转操作,得到(XTYT)T=(YT)T(XT)T=YX。正好是我们期待的结果。#include<iostr 阅读全文
posted @ 2012-10-23 15:02 代码改变未来 阅读(317) 评论(0) 推荐(0) 编辑
摘要:#include<iostream>using namespace std;int continumax(char *outputstr,char *inputstr){ int length=0,max=0;char *tempstr=inputstr;//C风格字符串需要分配内存 while(*inputstr) { if(*inputstr>'9'||*inputstr<'0') { length=0;inputstr++; } if(*inputstr<='9'&&*inputstr>= 阅读全文
posted @ 2012-10-23 14:44 代码改变未来 阅读(213) 评论(0) 推荐(0) 编辑
摘要:I am student 变成 student am I#include<iostream>using namespace std;void reverse(char *str,int n){ char* p = str+n-1; while (str<p) { char c = *str; *str = *p; *p=c; str++;p--; }}int main(){ char s[100]; while(gets(s)) { reverse(s,strlen(s)); int i=0,j=0; while(s[i]) { if(s[i]==' ') { 阅读全文
posted @ 2012-10-20 20:56 代码改变未来 阅读(485) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示