周围的人是否可能在C#中拥有游程解析器?我真的需要代码。感谢。
using System;
class RLDEC
{
static void Main()
{
int t = int.Parse(Console.ReadLine());
for (int k = 0; k < t; k++)
{
string s = Console.ReadLine();
s = runLengthDecoder(s);
Console.WriteLine(s);
}
}
static string runLengthDecoder(string s)
{
string d = ""; // decoded string
int cv; // current value
for(int k = 0; k < s.Length; k++)
{
cv = Convert.ToInt32(s[k]) - 48;
if (k + 1 < s.Length && cv != 1 && cv >= 2 && cv <= 9)
{
for(int v = 0; v < cv; v++)
d += s[k+1];
}
if (cv == 1)
{
int z = k + 1;
while(k < s.Length && z < s.Length && Convert.ToInt32(s[z]) - 48 != 1)
{
d += s[z];
z++;
k++;
}
k++;
}
}
return d;
}
}
答案 0 :(得分:1)
如果没有编码规范,很难解决这个问题,但在此代码中
if (k + 1 < s.Length && cv != 1 && cv >= 2 && cv <= 9)
{
for(int v = 0; v < cv; v++)
d += s[k+1];
}
我希望k在离开if块之前递增。
另外,我希望下一个if (cv==1)
改为else if
。
在那个cv==1
块中,我认为你应该只处理下一个字符并让外部for循环完成它的工作。
我也不明白该块是如何工作的