2016-07-14 3 views
-2

こんにちは、私はthisページの運動を行っていた段落のアルゴリズムに失敗した、と私は2つのテストケースがこれらのある失敗:テストケースは回文

小文字つの単語:間違った答えシングル

どれケース単語:間違った答え

アルゴリズムでは、私は大文字と小文字を制御するので、私は理解できません。

using System; 

public class Palindrome 
{ 
    public static char[] abecedario = new char[]{ 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','w','x','y','z'}; 
    public static char[] ABECEDARIO = new char[]{ 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','W','X','Y','Z'}; 

    public static bool IsPalindrome(string str) 
    { 
     string strOriginal = string.Empty; 
     string strInversa = string.Empty; 
     for(int i = str.Length-1; i >= 0; i--) 
     { 
      string concatenarInversa = string.Empty; 
      string concatenarOriginal = string.Empty; 
      for(int j = 0; j < abecedario.Length; j++) 
      { 
       if(str[i] == abecedario[j] || str[i] == ABECEDARIO[j]) 
       { 
        concatenarInversa = abecedario[j].ToString(); 
       } 
       if(str[(str.Length-1)-i] == abecedario[j] || str[(str.Length-1)-i] == ABECEDARIO[j]) 
       { 
        concatenarOriginal = abecedario[j].ToString(); 
       } 
       if(concatenarInversa!=string.Empty && concatenarOriginal != string.Empty) 
       { 
        break; 
       } 
      } 
      if(concatenarInversa!=string.Empty) 
      { 
       strInversa = strInversa + concatenarInversa; 
      } 
      if(concatenarOriginal != string.Empty) 
      { 
       strOriginal = strOriginal + concatenarOriginal; 
      } 
     } 
     Console.WriteLine("strInversa : " + strInversa); 
     Console.WriteLine("strOriginal : " + strOriginal); 
     return strInversa == strOriginal; 

    } 


    public static void Main(string[] args) 
    { 
     Console.WriteLine(IsPalindrome("sEeS")); 
    } 
} 
+0

アルゴリズムがどこに間違っているかをデバッガで確認しましたか? –

+0

問題が私にテストケースを示しているとわからない場合は、 – andrezi

答えて

0

あなたabecedario変数は文字Vが欠落している(V):

私のアルゴリズムは次のようです。これを試してみてください。おそらく

public static char[] abecedario = new char[]{ 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; 
public static char[] ABECEDARIO = new char[]{ 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; 

かを(簡単に入力する):

public static char[] abecedario = "abcdefghijklmnopqrstuvwxyz".ToCharArray(); 
public static char[] ABECEDARIO = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray(); 

をあなたの現在のコードが失敗したテストの例については、単語「V字形」を検討してください。それは回文ではありませんが、あなたのコードが文字Vを無視するので、それはそうであると信じています。

+0

ありがとう、:) – andrezi

関連する問題