题目1:有符号整数转化为字符串 void change(int number,char s[])
//有符号整数转化为字符串 void change(int number,char s[])
#include <iostream>
using namespace std;
void change(int number,char s[])
{
char temp[100];
int ite=0;
if(number>=0)
{
while(number)
{
temp[ite++]=number%10+'0';
number/=10;
}
temp[ite]='\0';
int is=0;
while(ite)
{
s[is++]=temp[--ite];
}
s[is]='\0';
}
else
{
number*=-1;
while(number)
{
temp[ite++]=number%10+'0';
number/=10;
}
temp[ite]='\0';
int is=0;
s[is++]='-';
while(ite)
{
s[is++]=temp[--ite];
}
s[is]='\0';
}
}
int main()
{
char s[100];
int number=-654;
change(number,s);
cout<<s<<endl;
return 0;
}
题目2:输出所给字符串的最大回文
示例:input="gabcdcbaef"
output="abcdcba"
#include <iostream>
#include <string.h>
using namespace std;
void huiwen(char input[],int len,char output[])
{
for(int j=len-1;j>=0;j--)
{
for(int i=0;i<j;i++)
{
int front=i,rear=j;
while(input[front++]==input[rear--])
{
if(front>=rear)
{
//找到回文,下标范围从i到j
int iout=0;
while(i<=j)
{
output[iout++]=input[i++];
}
output[iout]='\0';
return;
}
}
}
}
}
int main()
{
char input[]="gabcdcbaef";
int len=strlen(input);
char output[100];
huiwen(input,len,output);
cout<<output<<endl;
return 0;
}
题目3:删除子串,只要是原字符串中有相同的子串就删掉,不管有多少个,返回子串的个数和删除子串后的字符串。
方法1
#include <iostream>
#include <string.h>
using namespace std;
int delete_sub_str(const char *str,const char *sub_str,char *result)
{
int cnt=0; //子串个数
const char *p;
const char *q=sub_str;
while(*str!='\0')
{
while(*str!=*q)
{
*result++=*str++;
}
if(*str==*q)
{
p=str;
while(*str==*q&&(*str)!='\0')
{
str++;
q++;
}
if(*q=='\0')
{
cnt++;
q=sub_str;
}
else
{
str=p;
*result++=*str++;
}
}
if(*q=='\0')
cnt++;
else
{
q=sub_str;
p=str;
}
*result++=*p;
str++;
}
*result='\0';
return cnt;
}
int main()
{
const char *str="abdcdefgdef";
const char *sub_str="def";
char *result=new char[strlen(str)+1];
cout<<delete_sub_str(str,sub_str,result)<<'\n';
cout<<result<<endl;
return 0;
}
方法2 使用 int strncmp(const char str1, const char str2, len)函数 返回0表示str1和str2相等
#include <iostream>
#include <string.h>
using namespace std;
int delete_sub_str(const char *str,const char *sub_str,char *result)
{
int cnt=0;
int sub_len=strlen(sub_str);
while(*str!='\0')
{
if(!strncmp(sub_str,str,sub_len))
{
cnt++;
str+=sub_len;
}
*result++=*str++;
}
*result='\0';
return cnt;
}
int main()
{
const char *str="abdcdefgdefddefllsilj";
const char *sub_str="def";
char *result=new char[strlen(str)+1];
cout<<delete_sub_str(str,sub_str,result)<<'\n';
cout<<result<<endl;
return 0;
}