Check if a string is a palindrome

后端 未结 30 1348
星月不相逢
星月不相逢 2020-11-28 08:59

I have a string as input and have to break the string in two substrings. If the left substring equals the right substring then do some logic.

How can I do this?

相关标签:
30条回答
  • 2020-11-28 09:37

    This is a short and efficient way of checking palindrome.

    bool checkPalindrome(string inputString) {
    
        int length = inputString.Length;
        for(int i = 0; i < length/2; i++){
            if(inputString[i] != inputString[length-1-i]){
                return false;
            }
        }
    
        return true;
    
    }
    
    0 讨论(0)
  • 2020-11-28 09:38
     public static bool IsPalindrome(string value)
            {
                int i = 0;
                int j = value.Length - 1;
                while (true)
                {
                    if (i > j)
                    {
                        return true;
                    }
                    char a = value[i];
                    char b = value[j];
                    if (char.ToLower(a) != char.ToLower(b))
                    {
                        return false;
                    }
                    i++;
                    j--;
                }
            }
    
    0 讨论(0)
  • 2020-11-28 09:38
    public bool IsPalindroom(string input)
    {
        input = input.ToLower();
        var loops = input.Length / 2;
        var higherBoundIdx = input.Length - 1;
        for (var lowerBoundIdx = 0; lowerBoundIdx < loops; lowerBoundIdx++, higherBoundIdx--)
        {
            if (input[lowerBoundIdx] != input[higherBoundIdx])
            return false;
        }
        return true;
    }
    
    0 讨论(0)
  • 2020-11-28 09:39

    A single line of code using Linq

    public static bool IsPalindrome(string str)  
    {
        return str.SequenceEqual(str.Reverse());
    }
    
    0 讨论(0)
  • 2020-11-28 09:40

    This C# method will check for even and odd length palindrome string (Recursive Approach):

    public static bool IsPalindromeResursive(int rightIndex, int leftIndex, char[] inputString)
    {
        if (rightIndex == leftIndex || rightIndex < leftIndex)
            return true;
        if (inputString[rightIndex] == inputString[leftIndex])
            return IsPalindromeResursive(--rightIndex, ++leftIndex, inputString);
        else
            return false;            
    }
    
    0 讨论(0)
  • 2020-11-28 09:40

    Since a palindrome also includes numbers, words, sentences, and any combinations of these, and should ignore punctuation and case, (See Wikipedia Article) I propose this solution:

    public class Palindrome
    {
        static IList<int> Allowed = new List<int> {
            'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'h',
            'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
            'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
            '1', '2', '3', '4', '5', '6', '7', '8', '9',
            '0'
        };
        private static int[] GetJustAllowed(string text)
        {
            List<int> characters = new List<int>();
            foreach (var c in text)
                 characters.Add(c | 0x20); 
    
            return characters.Where(c => Allowed.Contains(c)).ToArray();
        }
        public static bool IsPalindrome(string text)
        {
            if(text == null || text.Length == 1)
                 return true;
    
            int[] chars = GetJustAllowed(text);
            var length = chars.Length;
    
            while (length > 0)
                if (chars[chars.Length - length] != chars[--length])
                    return false;
    
            return true;
        }
        public static bool IsPalindrome(int number)
        {
            return IsPalindrome(number.ToString());
        }
        public static bool IsPalindrome(double number)
        {
            return IsPalindrome(number.ToString());
        }
        public static bool IsPalindrome(decimal number)
        {
            return IsPalindrome(number.ToString());
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题