我必须找到隐藏在 3 行文本中的 4 位 PIN 码
I have to find a 4 digit PIN code hidden in 3 line text
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 个作业或一个循环。
encodedPinNumber[startPostion] + encodedPinNumber[startPostion + step]
正在做我认为的事情:添加 char 值。
'1' = 49, '3' = 51, 给出 100
'5' = 53, '7' = 55, 给出 108
或者使用子字符串而不是使用字符串作为字符数组。
正如Turo所说,当你使用索引访问一个字符串时,它会return char
。当两个char
字段执行+
操作时,会自动转换为int
.
所以尝试使用String.Substring Method来获得一个个性
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];
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 个作业或一个循环。
encodedPinNumber[startPostion] + encodedPinNumber[startPostion + step]
正在做我认为的事情:添加 char 值。
'1' = 49, '3' = 51, 给出 100
'5' = 53, '7' = 55, 给出 108
或者使用子字符串而不是使用字符串作为字符数组。
正如Turo所说,当你使用索引访问一个字符串时,它会return char
。当两个char
字段执行+
操作时,会自动转换为int
.
所以尝试使用String.Substring Method来获得一个个性
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];