字符串练习
进阶:空间复杂度 O(n)O(n) , 时间复杂度 O(n)O(n)
#define isup(x) (((x)>=('A'))&&((x)<=('Z')))
#define islitter(x) (((x)>=('a'))&&((x)<=('z')))
#define up2liter(x) ((x)=((x)+('a'-'A')))
#define liter2up(x) ((x)=((x)-('a'-'A')))
char* trans(char* s, int n ) {
char* p = malloc(n*sizeof(char));
char *plen,*ptmp = s,*pout;
int len = 0,wordposi[100001];
long int wordnum = 1;
for(plen=s;*plen;plen++)
{
len++;
if(*plen == ' ')
{
wordposi[wordnum++] = len;
}
}
pout = p;
ptmp[len] = ' ';
wordposi[0] = 0;
for(int i = wordnum-1;i>=0;i--)
{
while((ptmp[wordposi[i]]) !=' ')
{
*p = ptmp[wordposi[i]];
wordposi[i]++;
p++;
}
*p = ' ';
p++;
}
p = pout;
while(*p)
{
if(isup(*p)) up2liter(*p);
else if(islitter(*p)) liter2up(*p);
else{}
p++;
}
pout[len]='\0';
return pout;
}
char* longestCommonPrefix(char** strs, int strsLen ) {
// write code here
if(strsLen == 0) return "";
for(int i = 0;i
for(int j = 0 ;j
if(strs[0][i] != strs[j][i])
{
strs[0][i] ='\0';
return strs[0];
}
}
}
return strs[0];
}
以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
输入:"1","99"返回值:
"100"
char* solve(char* s, char* t ) {
// write code here
int lens = strlen(s);
int lent = strlen(t);
int lenresult = (lens > lent ? lens : lent) + 2;
int curresult = lenresult - 1;
int temp, flag = 0;
char* result = (char*)malloc(sizeof(char) * (lenresult));
result[curresult] = 0;
while(lens || lent){
temp = flag;
if(lent) temp += t[--lent] - '0';
if(lens) temp += s[--lens] - '0';
flag = temp / 10;
temp %= 10;
result[--curresult] = temp + '0';
}
result[0] = flag + '0';
return flag ? result : result + 1;
}