110,538
社区成员
发帖
与我相关
我的任务
分享
var c= new Class2() {Length = 3};
for (int i = 0; i < 100; i++)
{
Console.WriteLine(c.GetNext());
}
Console.WriteLine(c.GetNext("A3U"));
public class Class2
{
private static readonly char[] _chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
public int Length { get; set; }
private long _current;
public string GetNext()
{
return GetNext(_current);
}
public string GetNext(string current)
{
int k = 0;
foreach (char c in current.ToUpper())
{
int j;
if(c<='9')
j = (byte) c - (byte) '0';
else
{
j = (byte) c - (byte) 'A' + 10;
}
k = k*36 + j;
}
return GetNext(k);
}
public string GetNext(long current)
{
_current = current+1;
var c = new char[Length];
var p = _current;
for (int i = Length - 1; i >= 0; i--)
{
c[i] = _chars[p%36];
p = p/36;
}
return new string(c);
}
}