在C#中,如何确定给定的字符串是否是回文?

时间:2016-06-09 05:21:10

标签: c# palindrome

我目前想知道当给定的字符串(单词)时,如何确定它是否是回文。回文是一个单词或短语,如果向前或向后读取则相同。我想我可以通过循环一半的单词并将每个字母与另一半进行比较来解决这个问题。一个例子可能是:(word[0] == word[word.Length-1-0])将第一个字母与最后一个字母进行比较,而(word[1] == word[word.Length-1-1])会将第二个字母与倒数第二个字母进行比较。

  • 示例输入可以是:赛车

  • 示例输出: True

我是否正确地解决了这个问题?

到目前为止,我已经记下了一些内容。

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

                }

5 个答案:

答案 0 :(得分:3)

我会(很快)这样做。

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

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

答案 1 :(得分: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");
        }
    }
}

答案 2 :(得分: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));
    }
    }
}

答案 3 :(得分:0)

使用LINQ的较短版本将是

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

答案 4 :(得分: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();
        }