1 string
https://www.jianshu.com/p/cf2149034ae3 模拟实现 string类
https://www.cnblogs.com/Y1Focus/p/6707121.html
https://www.jianshu.com/p/f590af69df6d
2、替换空格:
/*length 为字符数组string的总的容量*/
void Replace(char string[], int length){
int originalLength = 0; /*originalLength为字符串string的实际长度*/
int numberOfBlank = 0;
int i = 0;
while(string[i] != '\0') {
++ originalLength;
if(string[i] == ' '){
++ numberOfBlank;
}
++ i;
}
/*newLength为把空格替换成‘%20’后的长度*/
int newLength = originalLength + numberOfBlank * 2;
if (newLength > length) {
return ;
}
int indexOforiginal = originalLength;
int indexOfNew = newLength;
while(indexOforiginal >= 0 && indexOfNew > indexOforiginal) {
if(string[indexOforiginal] == ' ') {
string[indexOfNew --] = '0';
string[indexOfNew --] = '2';
string[indexOfNew --] = '%';
} else {
string[indexOfNew --] = string[indexOforiginal];
}
-- indexOforiginal;
}
}
3、字符串的排列:输入一个字符串,打印出该字符串中字符的所有排列。例如:输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab,cba
int swap_str(char *str1,char *str2){
char temp=*str1;
*str1=*str2;
*str2=temp;
}
/*这个函数是输出排列的函数*/
void permutation(char *str1,char *begin){
if(*begin=='\0')//当递归到末尾的时候,输出该排列
cout<<str1<<endl;
else{
for(char *ch=begin;*ch!='\0';*ch++){//从子字符串进行递归
swap_str(ch,begin);
permutation(str1,begin+1);
swap_str(ch,begin);
}
}
}
4、第一个只出现一次的字符:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”则输出b
10. 不调用C/C++ 的字符串库函数,编写strcpy
char * strcpy(char * strDest,const char * strSrc)
{
if ((strDest==NULL)||strSrc==NULL))
return NULL;
char * strDestCopy=strDest;
while ((*strDest++=*strSrc++)!='\0');
*strDest = '\0';
return strDestCopy;
}
网友评论