社区
C#
帖子详情
求一简单算法,从A到ZZ...
cdo
2005-08-03 09:29:44
就像excel中的列标记一样,先从A开始,到Z,然后接下来是AA,AB...ZZ,AAA...ZZZ这样一直下去.
现在我有string s,想让s这样增加下去,求一算法.谢谢!
...全文
197
12
打赏
收藏
求一简单算法,从A到ZZ...
就像excel中的列标记一样,先从A开始,到Z,然后接下来是AA,AB...ZZ,AAA...ZZZ这样一直下去. 现在我有string s,想让s这样增加下去,求一算法.谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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最新教程(代码直接复制调试) 节选: 第1章 基础准备及入门 1.1 最
简单
的计算器使用法 为易于学习,本节以算例方式叙述,并通过算例归纳一些 MATLAB 最基本的规则和语 法结构。建议读者,在深入学习之前 ,先读一读本节。 【例 1.3-1】求 [12 2 (7 4)] 3 的算术运算结果。本例演示:最初步的指令输入形式 和必需的操作步骤。 (1)用键盘在 MATLAB 指令窗中输入以下内容 >> (12+2*(7-4))/3^2 (2)在上述表达式输入完成后,按 [Enter] 键,该指令被执行,并显示如下结果。 ans = 2 〖说明〗 本例在指令窗中实际运行的情况参见图 1.3-1。 指令行“头首”的“ >>”是“指令输入提示符”,它是自动生成的。本书在此后的输 入指令前将不再带提示符“ >>”。理由是:(A)为使本书简洁;(B)本书用 MATLAB 的 M-book 写成,而在 M-book 中运行的指令前是没有提示符的。
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
类(一)
2021SC@SDUSC 本章综述 大整数
ZZ
类主要实现了任意长度大整数表示、最大公因数、Jacobi符号和素性检验。笔者将通过逐个分析
ZZ
.cpp源代码中函数的形式来一步步向读者展示NTL是如何实现上述功能的。 计算最大公因数(gcd) (1)数学基础:(广义)欧几里得除法 知识储备(定理,公立,公式) ·如果 b|a ,则(a,b) = b; ·如果a,b为两整数,则(a,b) = (b,a) ·如果 p为素数,a为整数,且p ∤a,则a和p互素 证明:设(a,p) = d...
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 – Q – Z> A – B – Y – U – K – ...
简单
几何
算法
集合comp.graphics.algorithms Frequently Asked Questions(转)
http://www.cnblogs.com/SunWentao/archive/2007/10/30/943077.html 谢谢!!!CG comp.graphics.algorithm comp.graphics.algorithms Frequently Asked QuestionsFrom: orourke@cs.smith.ed
C#
111,074
社区成员
642,571
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章