Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
34
Task/Rep-string/C/rep-string-1.c
Normal file
34
Task/Rep-string/C/rep-string-1.c
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
int repstr(char *str)
|
||||
{
|
||||
if (!str) return 0;
|
||||
|
||||
size_t sl = strlen(str) / 2;
|
||||
while (sl > 0) {
|
||||
if (strstr(str, str + sl) == str)
|
||||
return sl;
|
||||
--sl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
char *strs[] = { "1001110011", "1110111011", "0010010010", "1111111111",
|
||||
"0100101101", "0100100", "101", "11", "00", "1" };
|
||||
|
||||
size_t strslen = sizeof(strs) / sizeof(strs[0]);
|
||||
size_t i;
|
||||
for (i = 0; i < strslen; ++i) {
|
||||
int n = repstr(strs[i]);
|
||||
if (n)
|
||||
printf("\"%s\" = rep-string \"%.*s\"\n", strs[i], n, strs[i]);
|
||||
else
|
||||
printf("\"%s\" = not a rep-string\n", strs[i]);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
18
Task/Rep-string/C/rep-string-2.c
Normal file
18
Task/Rep-string/C/rep-string-2.c
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
// strstr : Returns a pointer to the first occurrence of str2 in str1, or a null pointer if str2 is not part of str1.
|
||||
// size_t is an unsigned integer typ
|
||||
// lokks for the shortest substring
|
||||
int repstr(char *str)
|
||||
{
|
||||
if (!str) return 0; // if empty input
|
||||
|
||||
size_t sl = 1;
|
||||
size_t sl_max = strlen(str) ;
|
||||
|
||||
while (sl < sl_max) {
|
||||
if (strstr(str, str + sl) == str) // How it works ???? It checks the whole string str
|
||||
return sl;
|
||||
++sl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue