-1
using System;

namespace HiddenMessageC

{

    class Program

    {
        static void Main(string[] args)
        {
            string encodedPinNumber = Console.ReadLine();
            string startPostionString = Console.ReadLine();
            int step = Convert.ToInt32(Console.ReadLine());

            string pin = "";
            int startPostion = startPostionString[0] - 'a';
            pin += encodedPinNumber[startPostion] + encodedPinNumber[startPostion + step];
            pin += encodedPinNumber[startPostion + 2 * step] + encodedPinNumber[startPostion + 3 * step];

            Console.WriteLine(pin);
            Console.Read();
        }
    }
}

第一行是长度大于 4 的文本,仅由 0 到 9 的数字组成。

第二行编码文本中隐藏的 Pin 码开始的索引。可能的值是字母a、b或c,a表示起始索引为0,b表示起始索引为1,c表示起始索引为2。

第三行是一个数字,表示我们需要从第一行(从上面指定的起始索引开始)在文本中跳过多少个字符才能发现 PIN 码的 4 位数字。

如果我输入 123456789, a , 2 => 我应该得到 1357 结果...但我的结果是 => 100108。

你能给我一些建议吗?:)

4

2 回答 2

0

尝试将其分解为 4 个作业或一个循环。

encodedPinNumber[startPostion] + encodedPinNumber[startPostion + step]

正在做我认为的事情:添加 char 值。

'1' = 49,'3' = 51,给出 100

'5' = 53,'7' = 55,给出 108

或者使用 substring 而不是 using string as char-Array。

于 2021-01-23T11:18:45.363 回答
0

正如 Turo 所说,当您使用索引访问字符串时,它将返回char. 当这两个char字段执行+操作时,它们将自动转换为int.

所以尝试使用String.Substring 方法来获取单个字符。

pin += encodedPinNumber.Substring(startPostion, 1) + encodedPinNumber.Substring(startPostion + step, 1);
pin += encodedPinNumber.Substring(startPostion + 2 * step, 1) + encodedPinNumber.Substring(startPostion + 3 * step, 1);

或者将所有字符存储在一个列表中,然后使用索引来访问它们。

List<string> stringlist = encodedPinNumber.Select(c => c.ToString()).ToList();

pin += stringlist[startPostion] + stringlist[startPostion + step];
pin += stringlist[startPostion + 2 * step] + stringlist[startPostion + 3 * step];
于 2021-01-25T02:41:58.897 回答