//求目标串中最长有序子串
#include <stdio.h>
#include <stdlib.h>
void findLongestStr(char* str, size_t size)
{
int leng = 1, count = 0;
char* tp = str;
for(int i = 0; i < size; ++i)
{
if(str[i] < str[i+1])
count++;
else if(count+1 > leng)
{
tp = &str[i-count];
leng = count+1;
count = 0;
}
}
if(leng > 1)
for(int i = 0; i < leng; ++i)
{
printf("%c/t",*tp);
tp++;
}
else
printf("have not find the substring");
}
int main()
{
char a1[] = {'a','1','2','5','a','b','c','x','y','z'};
findLongestStr(a1, sizeof(a1)/sizeof(a1[0]));
printf("/n");
char a2[] = {'a','1','2','5','a','1','c','x','y','z'};
findLongestStr(a2, sizeof(a2)/sizeof(a2[0]));
printf("/n");
char a3[] = {'a','1','2','5','a','b','c','x','y','1'};
findLongestStr(a3, sizeof(a3)/sizeof(a3[0]));
printf("/n");
char a4[] = {'a','1','2','5','a','b','1','x','y','z'};
findLongestStr(a4, sizeof(a4)/sizeof(a4[0]));
printf("/n");
char a5[] = {'z'};
findLongestStr(a5, sizeof(a5)/sizeof(a5[0]));
printf("/n");
char a6[] = {};
findLongestStr(a6, sizeof(a6)/sizeof(a6[0]));
printf("/n");
system("pause");
return 0 ;
}
//将目标串中空格归一
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* clean_space(char *src,int size)
{
char *save = (char*)malloc(sizeof(char)*size);
strcpy(save,src);
char *dst,*ret;
ret = save;
dst = save;
while (*save != 0x00)
{
if (*save != ' ')
{
if (dst != save)
{
if (*(save-1) == ' ')
*dst++ = ' ';
*dst++ = *save;
} else
dst++;
}
save++;
}
*dst++ = '/0';
system("pause");
return ret;
}
//x&(x-1)的用法
#include <stdio.h>
#include <stdlib.h>
int func(int x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
printf("%d/n",x);
}
return countx;
}
int main(){
int i=func(9999);
printf("%d/n",i);
system("pause");
return 0;
}