4

私は面接の準備をしていて、単純な C プログラミングの質問から始めました。私が遭遇した 1 つの質問は、特定の文字列が回文かどうかを確認することでした。ポインターを使用して、ユーザーが指定した文字列が回文であるかどうかを確認するコードを作成しました。これがランタイムの点で効果的な方法であるかどうか、またはそれに対してできる拡張があるかどうかを知りたいです。また、ポインターを使用するときに、文字以外の他の文字 (アポストロフィー カンマなど) を削除する方法を誰かが提案してくれるとうれしいです。以下に関数を追加しました。文字列へのポインタをパラメータとして受け取り、整数を返します。

int palindrome(char* string)
{
    char *ptr1=string;
    char *ptr2=string+strlen(string)-1;
    while(ptr2>ptr1){
        if(tolower(*ptr1)!=tolower(*ptr2)){
            return(0);
        }
        ptr1++;ptr2--;
    }
    return(1);
}
4

4 に答える 4

0

ポインターのみを使用して実行したい場合は、次のようにしてください。

int main()
{
 char str[100];
 char *p,*t;
 printf("Your string : ");
 gets(str);
 for(p=str ; *p!=NULL ; p++);
  for(t=str, p-- ; p>=t; )
  {
    if(*p==*t)
    {
        p--;
        t++;
    }
    else
        break;
  }
  if(t>p)
       printf("\nPalindrome");
  else
       printf("\nNot a palindrome");
  getch();
  return 0;
}
于 2013-10-07T16:01:38.103 に答える