【问题标题】:Increment the numeric ending of a String by 1, using: Void increment(char[] referenceNumber)使用: Void increment(char[] referenceNumber) 将字符串的数字结尾增加 1
【发布时间】:2020-04-07 22:34:52
【问题描述】:

请帮我解决我最近遇到的这个面试问题,我们将不胜感激。

请在 C# 中实现根据以下规则递增 string 的函数:

  1. 它应该采用未知长度的字符串并将该字符串的数字结尾增加 1。

  2. 如果数字结尾溢出,则必须重置

  3. 不要使用正则表达式。

例子:

  • 000002 ▶ 000003
  • DRI000EDERS0RE99999 ▶ DRI000EDERS0RE00000

【问题讨论】:

  • 你试过什么?请向我们展示您最近尝试的代码以及您遇到的问题。

标签: c# string increment


【解决方案1】:

给这只猫剥皮的方法很少。我想我实际上会依靠 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);

我们将字符串转换为 char 数组以便于操作,然后从头到尾向后跳过。当我们碰到一个非数字或字符串开始时,我们想停止循环。然后逻辑很简单,就像孩子一样。如果我们在 9 上,我们将返回 0(“下一个可能会在循环的下一次通过时完成),否则我们将 char 加一并退出:

  • 4 变为 5
  • 19 变为 10 变为 20
  • abc9999 变为 abc9990 然后 abc9900 然后 abc9000 然后 abc0000 然后循环退出非数字 c

【讨论】:

    猜你喜欢
    • 2020-11-16
    • 2021-02-14
    • 2012-11-06
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    相关资源
    最近更新 更多