问题描述:
去年师兄面试阿里实习时被问到一个字串问题:所谓的字串问题即:如果一个字符串为”ABCD“,那么A,AB,ABC,ABCD,B,BC,BCD。。。。。被称为原串的子串,让打印出所有的字串。这道题目实际上很简单,两个循环就可以搞定,可能比较紧张,当时师兄没有打上来。现在将程序贴出,可惜复杂度较高O(n^2),希望大神改进。
#include<stdio.h>
void main()
{
char a[]="ABCDE";
for(int i =0; i <=5; i++)
for(int j = i+1; j <= 5 ; j++)
{ char b = a[j];
a[j] = '\0';
char *p = a;
printf("%s\n", p+i);
a[j] = b;
}
}