Member 13302374 Ответов: 4

Как добавить к заданной строке без превышения лимита? (C#)


Вот вопрос и мой ответ (который показывается как неправильный) ниже:
{
        /****************************************************************
        
        Return the longest string possible by appending "abc" to the given string without exceeding the limit. If the string cannot be extended without exceeding the limit, return it unmodified.
        
        *****************************************************************/
        public static string AppendUntilLimit(string aString, int limit)
        {
            var fullLength = aString.Length + 3;

            if (fullLength <= limit)

            { return aString + "abc"; }
            else
            { return aString; }



        }
    }
}

Может ли кто-нибудь указать мне, где я ошибся, пожалуйста?
Заранее спасибо

Что я уже пробовал:

public static string AppendUntilLimit(string aString, int limit)
        {
            var fullLength = aString.Length + 3;

            if (fullLength <= limit)

            { return aString + "abc"; }
            else
            { return aString; }



        }
    }
}

ZurdoDev

Выглядит хорошо для меня, на беглый взгляд. Почему вы говорите, что это неправильно?

Member 13302374

Когда я нажимаю Ctrl+F5, чтобы построить и запустить это, я получаю окно с надписью:

Тестовый случай не удался:
Вызываемый метод с помощью (abc, 9)
ожидаемый (abcabcabc)
получено (abcabc)

Peter_in_2780

Я думаю, что вопрос заключается в том, чтобы многократно добавлять "abc", не срывая лимит.

F-ES Sitecore

Они могли бы иметь в виду, что вы будете добавлять abc несколько раз. Поэтому, если текст " XYZW "и ограничение равно 10, они хотят"XYZWabcabc". Но это всего лишь предположение.

Member 13302374

Я вижу. Есть идеи, как бы я это закодировал?

4 Ответов

Рейтинг:
1

Pete O'Hanlon

Я подозреваю, что проблема здесь заключается в том, что вам не хватает некоторого кода; а именно, вам не хватает цикла, который вы хотите использовать для добавления строки. Вы вызываете AppendUntilLimt, но он добавит только одну abc в конец, потому что вы не дали ему цикл, чтобы продолжать добавлять ограничение строки. Таким образом, вы будете иметь, чтобы изменить свой способ AppendUntilLimit, чтобы выглядеть как-то так:

public static string AppendUntilLimit(string aString, int limit)
{
  bool finish = aString.Length + 3 < limit;
  while (!finish)
  {
    aString = aString + "abc";
    finish = aString.Length +3 < limit;
  }
  return aString;
}


Рейтинг:
1

Patrice T

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

Цитата:
Верните самую длинную строку, добавив "abc"к данной строке, не превышая предела.

слово " самый длинный "означает, что если есть место для более чем 1" abc", вы должны повторить операцию до тех пор, пока не останется больше места для другого"abc".


Рейтинг:
1

RickZeeland

Ваш код кажется мне нормальным, может быть, они хотят, чтобы вы сделали еще какую-то проверку ошибок, проверили null, использовать try ... catch или что-то в этом роде ?


Рейтинг:
0

Super Superman

Может ли что-то подобное сработать для вас?

public static string AppendUntilLimit(string aString, string bString, int limit)
{
    return $"{aString}{bString}".Substring(0, limit);
}

Если вы хотите предотвратить добавление bString, вы можете использовать что-то вроде:
public static string AppendUntilLimit(string aString, string bString, int limit)
{
    return aString.Length + bString.Length > limit ? aString : $"{aString}{bString}";
}


Member 13302374

Откуда у тебя эта струна? Я получаю красную волнистую линию под этим

Super Superman

Это в обновленной сигнатуре метода:

общественности статической строки AppendUntilLimit(строка, строка, строка bString, инт предел);

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