南京三星面试准备1--字符串
字符串
1、把一串字符串里的数字找出来加起来
void Reverse(char* const numbers,int length){char temp;for(int i=0;i<length/2;i++){temp=numbers[i];numbers[i]=numbers[length-i-1];numbers[length-i-1]=temp;}}void PrintReverse(char* const numbers,int length){int i=0;Reverse( numbers,length);int letterLen=0,begin=0;i=0;bool flag=true;while(numbers[i]!='\0'){if(numbers[i]!=' '){flag=true;letterLen++;}else if(flag){if(letterLen>1)Reverse(numbers+begin,letterLen);letterLen=0;begin=i+1;flag=false;}elsebegin++;i++;}Reverse(numbers+begin,letterLen);printf("%s\n",numbers);}左旋转字符串7、第一次只出现一次的字符
void Permutation(char* source,char *begin);void Permutation(char* source){int length=strlen(source);if(source==NULL||length<=0)return;Permutation(source,source);}int *Sort(char *arrays){int length=strlen(arrays);char temp;int *index=new int[length];int tempIndex;for(int i=0;i<length;i++){index[i]=i;}for(int i=0;i<length;i++){for(int j=i;j<length;j++){if(arrays[j]<arrays[i]){temp=arrays[j];arrays[j]=arrays[i];arrays[i]=temp;tempIndex=index[j];index[j]=index[i];index[i]=tempIndex;}}}return index;}void Permutation(char* source,char *begin){if(begin[0]=='\0')printf("%s\n",source);else{int length=strlen(begin);char *temp=new char[length+1];int i=0;char word;int *index;temp=strcpy(temp,begin);index=Sort(temp);for(;i<length;i++){if(i>0&&temp[i]==temp[i-1])continue;swap(begin[0],begin[index[i]]);Permutation(source,begin+1);swap(begin[0],begin[index[i]]);}delete []temp;delete []index;}}如果没有返回0,有的话返回子字符串的个数。
3.编写strcpy函数,不可以用字符串相关的库函数。