@CallMeYourDaddy

Как оптимизировать алгоритм нахождения палиндрома?

Как оптимизировать данный алгоритм?
public void checkPalindrome(string number)
        {
            string value1 = null;
            string value2 = null;

            for (int i = 0; i < number.Length; i++)
            {
                value1 += number[i];
                
            }

            for(int q = number.Length; q > 0; q--)
            {
                value2 += number[q - 1];
            }


            string result = value1 == value2 ? "Yes, it's a Palindrome" : "No, it's not a Palindrome";
            Console.WriteLine(result);
        }
  • Вопрос задан
  • 69 просмотров
Решения вопроса 2
bingo347
@bingo347
Бородатый программер
Достаточно проходить до половины строки, сравнивая начальные символы с конечными и завершая проверку при первой неудаче:
public void checkPalindrome(string input)
{
    string result = isPolindrome(input) ? "Yes, it's a Palindrome" : "No, it's not a Palindrome";
    Console.WriteLine(result);
}

private bool isPolindrome(string input)
{
    int halfLength = input.Length / 2;
    for (int i = 0; i < halfLength; i++)
    {
        if (input[i] != input[input.Length - i - 1])
            return false;
    }
    return true;
}
так получим наилучшую возможную сложность O(n / 2) и Ω(1)
Ответ написан
public bool IsPalindrome(string number)
{
    for (int i = 0, j = number.Length - 1; i < number.Length / 2; i++, j--)
        if (number[i] != number[j])
            return false;
    return true;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
MykolaPetiukh
@MykolaPetiukh
Директор кафе
void Main()
{
	string s1="А роза упала на лапу Азора";
	string s2="Hello world";
	Console.WriteLine(IsPalindrome(s1));
	Console.WriteLine(IsPalindrome(s2));
}



bool IsPalindrome(string input){
	string s=Regex.Replace(input,@"\s",String.Empty);
	string reverse=new string(s.ToCharArray().Reverse().ToArray());
	return s.ToLower()==reverse.ToLower();
}


Результат:
True
False

5f435c1273863340960174.png

Понятно, что надо еще добавить чистку от знаков препинания и много чего, о чем я и не вспомню сейчас, но для простых строк данного примера достаточно
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
BRIO MRS Казань
от 70 000 до 120 000 ₽
Frostgate studio Новосибирск
от 60 000 до 100 000 ₽
Russ Outdoor Москва
До 200 000 ₽