2016-06-09 79 views
-2

我目前想知道如果給定的字符串(單詞),如何確定它是否是迴文。迴文是指向前或向後讀取時相同的單詞或短語。我想我可以通過循環閱讀一半的單詞並將每個字母與另一半進行比較來解決這個問題。例如:(word[0] == word[word.Length-1-0])會比較第一個字母和最後一個字母,(word[1] == word[word.Length-1-1])會比較第二個字母和第二個字母。在C#中,如何確定給定的字符串是否是迴文?

  • 例輸入可以是:賽車

  • 輸出示例:

我是不是正確地處理這個問題朝着妥善解決?

這是我寫下來的一些內容。

public bool Test6(string word) 
     { 
      for (int i = 0; i < word.Length; i++) 
      { 
       if (word[0] == word[word.Length - 1 - 0]) 
       { 

       } 
+0

HTTP代碼://www.dotnetperls。 com/palindrome – Eldho

+0

到達那裏 - 這是正確的方法。一個觀察:循環計數器只需要走半個字符串長度(想想爲什麼這樣)。 –

+0

鏈接重複的問題...標記的答案...哦,我的。我的建議:繼續使用自己的方法,不要在鏈接問題中使用答案!這不是真正的答案。 –

回答

0

請點擊此鏈接http://www.dotnetperls.com/palindrome

你可以用這個例子做沒有使用任何內置的方法:

using System; 

class Program 
{ 
    public static bool IsPalindrome(string value) 
    { 
    int min = 0; 
    int max = value.Length - 1; 
    while (true) 
    { 
     if (min > max) 
     { 
     return true; 
     } 
     char a = value[min]; 
     char b = value[max]; 
     if (char.ToLower(a) != char.ToLower(b)) 
     { 
     return false; 
     } 
     min++; 
     max--; 
    } 
    } 

    static void Main() 
    { 
    string[] array = 
    { 
     "civic", 
     "deified", 
     "deleveled", 
     "devoved", 
     "dewed", 
     "Hannah", 
     "kayak", 
     "level", 
     "madam", 
     "racecar", 
     "radar", 
     "redder", 
     "refer", 
     "repaper", 
     "reviver", 
     "rotator", 
     "rotor", 
     "sagas", 
     "solos", 
     "sexes", 
     "stats", 
     "tenet", 

     "Dot", 
     "Net", 
     "Perls", 
     "Is", 
     "Not", 
     "A", 
     "Palindrome", 
     "" 
    }; 

    foreach (string value in array) 
    { 
     Console.WriteLine("{0} = {1}", value, IsPalindrome(value)); 
    } 
    } 
} 
+1

這個答案可以說是Sam Allen的代碼的邊界抄襲,它是** copyright 2007-2016 **。我不認爲這個鏈接表明你引用了一個外國來源 – MickyD

+0

@MickyD我在那個網站上找到確切答案後添加了鏈接 – Sherlock

+0

除了和Hari的[精確答案](http:/ /stackoverflow.com/a/37717473/585968) – MickyD

3

我會做到這一點(快)。

string input = "..." 
string reverse = new string(input.ToCharArray().Reverse().ToArray()); 

if(input.Equals(reverse) 
{ 
    // polindrome. 
} 
+0

你應該傳遞'char []'給字符串構造函數。所以你需要在'.Reverse()' –

+0

@RezaAghaei好點之後調用'.ToArray()',更新。謝謝。 –

0

使用LINQ一個較短的版本將是

bool IsPalindrome(string x) 
{ 
    return Enumerable.Range(0,x.Length/2).All(e => x[e] == x[x.Length-1-e]); 
} 
0

樣品代碼 -

static void Main(string[] args) 
     { 
      string s,revs=""; 
      Console.WriteLine(" Enter string"); 
      s = Console.ReadLine(); 
      for (int i = s.Length-1; i >=0; i--) //String Reverse 
      { 
       revs += s[i].ToString(); 
      } 
      if (revs == s) // Checking whether string is palindrome or not 
      { 
       Console.WriteLine("String is Palindrome \n Entered String Was {0} and reverse string is {1}", s, revs); 
      } 
      else 
      { 
       Console.WriteLine("String is not Palindrome \n Entered String Was {0} and reverse string is {1}", s, revs); 
      } 
      Console.ReadKey(); 
     } 
1

請在下面找到

using System; 
using System.Linq; 

class MyClass 
{ 
    static void Main(string[] args) { 
     string str = Console.ReadLine(); 

     string backwardsGuy = new string(str.Reverse().ToArray()); 
     if(str==backwardsGuy) 
     { 
      Console.WriteLine("True"); 
     } 
     else 
     { 
      Console.WriteLine("False"); 
     } 
    } 
} 
相關問題