c# Странные пары || Я не могу определить разницу между этими двумя решениями? - PullRequest
0 голосов
/ 10 февраля 2020

Я попробовал вызов на edabit.com. Это про "странные пары". Поэтому задача состоит в том, чтобы вернуть true, если «первая буква 1-й строки = последняя буква 2-й строки. Последняя буква 1-й строки = первая буква 2-й строки». ... также возвращает true, если обе строки равны нулю.

Кто может определить разницу? Заранее спасибо.

Моя попытка:

public class Program
{
    public static bool IsStrangePair(string str1, string str2)
    {

            if (str1[0] == str2[str2.Length - 1] && str2[0] == str1[str1.Length - 1])
                return true;

            if (str1 == "" && str1 == str2)
                return true;

            return false;
        }
}

Их ответ:

using System.Linq;

public class Program
{
    public static bool IsStrangePair(string str1, string str2)
    {
            if(string.IsNullOrEmpty(str1) || string.IsNullOrEmpty(str2))
            {
                return str1 == str2;
            }

            return str1.First() == str2.Last()
                && str2.First() == str1.Last();
    }
}

Я не могу определить разницу. Может кто-нибудь сказать мне, почему мое решение создает исключение IndexOutOfRangeException, а их нет? Мое решение работает в целом, кроме двух случаев. К сожалению, я не вижу, в каких случаях это происходит, и я не понимаю, при каких обстоятельствах возникнет эта ошибка.

1 Ответ

4 голосов
/ 10 февраля 2020

задача состоит в том, чтобы ... вернуть true, если обе строки имеют значение null.

Ваш код вылетает, если обе строки имеют значение null.

Вы должны всегда пробовать контрольные примеры, которые конкретно упомянуты в задании .

Вы должны усвоить это и для интервью; У меня часто есть кандидаты на собеседование, где я даю им задание на кодирование, я даю им некоторые примеры входных и выходных данных, и они никогда не удосуживаются проверить, работает ли их код на примере входных и выходных данных.

Я надеваю Не понимаю, при каких обстоятельствах возникнет эта ошибка.

Всегда думайте о том, какие тестовые примеры могут взломать sh ваш код . Думай как злоумышленник. Предположим, что вам дали ваш код и дали задание «найти способ сделать так, чтобы он сделал sh». Что бы вы сделали? Проще всего начать с пустых и пустых строк, поэтому начинайте с этих .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...