Увеличьте число c окончания строки на 1, используя: Void increment (char [] referenceNumber) - PullRequest
0 голосов
/ 08 апреля 2020

Пожалуйста, помогите мне с этим вопросом об интервью, с которым я недавно столкнулся, каждая помощь будет оценена.

Пожалуйста, реализуйте в C# функцию, которая увеличивает string, основываясь на следующих правилах:

  1. Следует взять строку неизвестной длины и увеличить число c, заканчивающееся этой строкой, на 1.

  2. Если число c заканчивается переполнен, его необходимо сбросить

  3. Не используйте регулярные выражения.

Примеры:

  • 000002 ▶ 000003
  • DRI000EDERS0RE99999 ▶ DRI000EDERS0RE00000

1 Ответ

0 голосов
/ 08 апреля 2020

Несколько способов снять шкуру с этой кошки. Я думаю, что на самом деле я бы полагался на c# способность обрабатывать char как int и манипулировать символами, а не пытаться разобрать int из него, увеличивать его, а затем форматировать обратно

string s = "abcd999";
string ca = s.ToCharArray();

for(int i = ca.Length - 1; i>= 0 && char.IsDigit(ca[i]); i--){
  if(ca[i] == '9')
    ca[i] = '0';
  else {
    ca[i]++;
    break;
  }
}

return new string(ca);

Мы переворачиваем строка в массив символов для легкого манипулирования, а затем пропустить его обратно от конца к началу. Мы хотим прекратить зацикливание, когда мы нажимаем не ди git или начало строки. Тогда логика c считается простой, как ребенок. Если мы находимся на 9, мы go возвращаемся к 0 ("увеличение следующего может быть сделано при следующем проходе l oop), в противном случае мы увеличиваем символ на единицу и выходим:

  • 4 становится 5,
  • 19 становится 10 становится 20,
  • abc9999 становится abc9990, затем abc9900, затем abc9000, затем abc0000, затем l oop выходит на номер не git c
...