Я пытаюсь использовать C, чтобы напечатать все палиндромы в строке и вернуть общее число.
Мой код возвращает все виды подстрок, которые не являются палиндромами и печатными пробелами.
Я не согласен хотя бы с одним в форматировании моего оператора printf, но также и в моих сравнениях элементов массива он работает наоборот, как я и предполагал.
Может кто-нибудь увидеть, куда я идуне так?
Вот мой код:
#include<stdio.h>
#include<string.h>
char x[1000];
void getString(char *n)
{
printf("\nPlease enter your string: ");
scanf("%s", n);
}
int findPals(char *s)
{
int length = strlen(s);
int numPals = 0;
//find odd palindromes
for(int i = 0; i < length; i++)
{
for(int j = 0; j + i < length && i - j >= 0; j++)
{
if(s[i + j] != s[i - j])
continue;
else
{
numPals++;
printf("%.*s\n", (j - i),s + i);
}
}
}
//find even palindromes
for(int i = 0; i < length; i++)
{
for(int j = 0; j + i + 1 < length && i - j >= 0; j++)
{
if(s[i + j + 1] != s[i - j])
continue;
else
{
numPals++;
printf("%.*s\n", (j - i),s + i);
}
}
}
return numPals;
}
int main()
{
char inStr[1000];
int totalPals;
getString(inStr);
totalPals = findPals(inStr);
printf("I found %d palindromes.\n", totalPals);
return 0;
}