社区
C#
帖子详情
求一简单算法,从A到ZZ...
cdo
2005-08-03 09:29:44
就像excel中的列标记一样,先从A开始,到Z,然后接下来是AA,AB...ZZ,AAA...ZZZ这样一直下去.
现在我有string s,想让s这样增加下去,求一算法.谢谢!
...全文
203
12
打赏
收藏
求一简单算法,从A到ZZ...
就像excel中的列标记一样,先从A开始,到Z,然后接下来是AA,AB...ZZ,AAA...ZZZ这样一直下去. 现在我有string s,想让s这样增加下去,求一算法.谢谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ThinPig
2005-08-04
打赏
举报
回复
这样效率最高。
public string ShowString()
{
StringBuilder Temp=new StringBuilder(160);
try
{
for (int k=0;k<4;k++)
{
for (int i=(int)'a';i<=(int)'z';i++)
{
for (int j=0;j<k;j++)
{
Temp.Append((char)i);
}
}
}
return Temp.ToString();
}
catch (Exception e)
{
throw new ExternalException(e.Message);
}
}
ThinPig
2005-08-04
打赏
举报
回复
刚才发的有不对,生成的是 A..Z,AA,BB,CC...ZZ,AAA,BBB,CCC....ZZZ
我想楼主的意思是:A..Z,AA,AB,AC,AD...ZZ,AAA,AAB,AAC...AAZ,ABA,ABB,ABC,ABD..ABZ...ZZZ 吧。如果不需要太多的灵活性这样写就可以了,简单效率又高。
public static string ShowString()
{
StringBuilder Temp = new StringBuilder(18278);
try
{
for (int k = 0; k < 4; k++)
{
for (int i = (int) 'a'; (i <= (int) 'z') && (k >= 0); i++)
{
if (k.Equals(0)) Temp.Append((char) i);
for (int l = (int) 'a'; l <= (int) 'z' && (k >= 1); l++)
{
if (k.Equals(1))
{
Temp.Append((char) i);
Temp.Append((char) l);
}
for (int j = (int) 'a'; j <= (int) 'z' && (k >= 2); j++)
{
if(k.Equals(2))
{
Temp.Append((char) i);
Temp.Append((char) l);
Temp.Append((char) j);
}
}
}
}
}
return Temp.ToString();
}
catch (Exception e)
{
throw new ExternalException(e.Message);
}
}
落伍者
2005-08-03
打赏
举报
回复
sqfeiyu(流星雨)的想法不错。有意思
quicklight
2005-08-03
打赏
举报
回复
so easy a:
private string GetCode(string prev)
{
if(prev == null || prev == "")
return "A";
char last = prev[prev.Length - 1];
if(last < 'Z')
prev = prev.Substring(0, prev.Length - 1) + (char)(last + 1);
else
{
prev = prev.Substring(0, prev.Length - 1) + "AA";
}
return prev;
}
shrinerain
2005-08-03
打赏
举报
回复
不是很明白楼主的意思,如果是构造a,b...z;aa,bb..zz;aaa,bbb..zzz;这种字符串的话见下面
int strLength=3;
for(int i=0;i<strLength;i++)
{
for(int myChar=65;myChar<=90;myChar++)
{
string originStr=null;
for(int m=0;m<=i;m++)
originStr+=(char)myChar;
Console.WriteLine(originStr);
}
}
sqfeiyu
2005-08-03
打赏
举报
回复
提供一個思路參考一下:
class NumStr:
{
private int num;
private string str;
public NumStr()
{
num=1;
str="A";
}
public string STR
{
get{return str;}
set
{
str=val;
StrToNum();
}
}
public string add(int i)
{
num +=1;
if(num%26==0) num+=1;
NumToStr();
return str;
}
private void StrToNum()
{
int n=str.length;
num=0;
for(int i=0;i<n;i++)
{
num += ((int)str[i]-64)*(int)System.Math.Pow(26,(n-i-1))
}
}
private void NumToStr()
{
int n=1;
int m=num;
str=""
while(n<m)
{
int t=m/26;
int y=m%26;
str= (char)(y+65) + str;
if(y==0)
m =m-26;
else
m=t*26;
}
}
}
abiho
2005-08-03
打赏
举报
回复
int count=0;
private void Begin()
{
int len=3;
Console.WriteLine(string.Format("开始,字符长度为{0},时间{1}\r\n",
len,DateTime.Now.ToString("HH:mm:ss.fffffff")));
byte[] result=new byte[len];
for(int i=0;i<len;i++)
{
result[i]=0x40;
}
while(true)
{
this.NextResult(result,len);
if(result[0]<0x5B)
{
this.PrintResult(result);
}
else
{
break;
}
}
Console.WriteLine(string.Format("结束时间:{0}\r\n",
DateTime.Now.ToString("HH:mm:ss.fffffff")));
}
private void PrintResult(byte[] result)
{
int i=0;
for(;result[i]<0x41;i++);
string str=System.Text.Encoding.ASCII.GetString(result,i,result.Length-i);
Console.Write(str+" ");
if(count>=25)
{
Console.Write("\r\n");
count=0;
}
else
count++;
Application.DoEvents();
}
private void NextResult(byte[] result,int len)
{
this.BytePlusOnce(result,len-1);
}
private void BytePlusOnce(byte[] result,int i)
{
if(i>0)
{
if(result[i]<0x5A)
{
result[i]++;
}
else
{
result[i]=0x41;
BytePlusOnce(result,i-1);
}
}
else
{
result[i]++;
}
}
cdo
2005-08-03
打赏
举报
回复
thx
sequelbo
2005-08-03
打赏
举报
回复
private string GetCode(string Father,string End)
{
if(Father==End)
{
return Father+"_"+"A";
}
string []Abc=new string[]{"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
string Ez=End.Remove(0,End.Length-1);
if(Ez=="Z")
{
return End.Remove(End.Length-1,1)+"AA";
}
else
{
for(int i=0;i<Abc.Length;i++)
{
if(Ez==Abc[i])
{
return End.Remove(End.Length-1,1)+Abc[i+1];
}
}
}
return "";
}
类似!
cdo
2005-08-03
打赏
举报
回复
怎么没人进来看看呀.
wingnal
2005-08-03
打赏
举报
回复
很简单的一个函数,写一下不就完了,自己动手阿,呵呵
cdo
2005-08-03
打赏
举报
回复
thx
Matlab2012b最新教程(代码直接复制调试).
Matlab2012b是一款由MathWorks公司推出的重要数值计算软件,广泛应用于工程计算、数据分析、
算法
开发等领域。Matlab2012b最新教程详细介绍了如何利用Matlab进行基本的数学运算、程序编写以及数据处理等操作。本教程...
ZZ
一些
简单
算法
1. Given a rectangular (cuboidal for the puritans) cake with a rectangular piece removed (any size or orientation), how would you cut the remainder of the cake into two equal halves with one straight
NTL密码
算法
开源库——大整数
ZZ
类(一)
笔者将通过逐个分析
ZZ
.cpp源代码中函数的形式来一步步向读者展示NTL是如何实现上述功能的。 计算最大公因数(gcd) (1)数学基础:(广义)欧几里得除法 知识储备(定理,公立,公式) ·如果 b|a ,则(a,b) = b...
QuAlgorithmZoo.jl:Yao.jl框架下的量子
算法
实现探索
简介:QuAlgorithmZoo.jl是一个开源的量子
算法
库,它在Yao.jl框架的基础上提供多种量子
算法
的实现。本文介绍了其核心功能、包含的
算法
如Shor、Grover和HHL等,并探讨了如何利用此资源库来学习和应用量子
算法
。...
java编写字母z
算法
_java – 高效的
算法
来查找从A到Z的所有路径?
有一套random inputs这样(20k行):A BU ZB AA CZ AK ZA QD AU KP UU PB YY RY UC RR QA DQ Z查找从A到Z的所有路径。> A – B – Y – R – Q – Z> A – B – Y – U – Z> A – C – R – Q – Z> A –...
C#
111,112
社区成员
642,555
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章