fork download
  1. #include<stdio.h>
  2. #include<string.h>
  3. int arr[10];
  4. int m=10;
  5. void pre()
  6. {
  7. char ip[11];
  8. scanf("%s",ip);
  9. arr[0]=0;
  10. for(int i=1;i<m;i++)
  11. {
  12. int len=arr[i-1];
  13. while(1)
  14. {
  15. if(ip[len]==ip[i])
  16. {
  17. arr[i]=len+1;
  18. break;
  19. }
  20. else
  21. {
  22. if(len==0)
  23. {
  24. if(ip[i]==ip[0])
  25. arr[i]=1;
  26. else
  27. arr[i]=0;
  28.  
  29.  
  30. break;
  31. }
  32. else
  33. {
  34. if(len==arr[len]) //This line if not present gives infinite loop
  35. len=0; //I wanna know should it be 0 or sth else. It's giving right answer for my cases
  36. else
  37. len=arr[len];
  38. }
  39. }
  40. }
  41. }
  42. for(int i=0;i<m;i++)
  43. printf("%d\t",arr[i]);
  44. printf("\n");
  45. }
  46. int main()
  47. {
  48. pre();
  49. }
Success #stdin #stdout 0s 2732KB
stdin
aaaba
stdout
0	1	2	0	1	0	0	0	0	0