请教高手,请问一个字符串的问题
时间:2008-07-23 16:32:36
来源:论坛整理 作者: 编辑:chinaitzhe
对于任何一个字符串,例如"ABC",输出接下来的n个字符串,例如n=3,即ABD,ABE,ABF
"ZZY" ,输出接下来的4个字符串: ZZZ,AAAA,AAAB,AAAC
在线等待!请教高手!
网友回复:此回复为自动发出,仅用于显示而已,并无任何其他非凡作用
楼主【dvkc】截止到2008-07-23 11:21:51的历史汇总数据(不包括此帖):
发帖的总数量:7 发帖的总分数:450 每贴平均分数:64
回帖的总数量:8 得分贴总数量:1 回帖的得分率:12%
结贴的总数量:7 结贴的总分数:450
无满足结贴数:2 无满足结贴分:120
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满足结贴率:28.57 % 无满足结分率:26.67 %
敬礼!

网友回复:一个有进位的ascii码加减问题
网友回复:这个还是自己写吧,这是什么需求,呵呵。
网友回复:学习···
网友回复:把A,B等26个字母考虑成数,然后把字符串当成26进制的数就可以了,自己写一个简单的加1算法,考虑满26的时候进位,不麻烦
网友回复:自己写了一个,但是感觉逻辑上的递归有些复杂啊,呵呵,所以想看看有没有什么简单的想法!
网友回复:
能说具体一些吗??
网友回复:
假如n很大的情况就比较复杂啊!
网友回复:
再大也是每次加1,怕什么.
只要实现一个简单的加1算法就可以了.
网友回复:
恩,我想复杂了,呵呵,谢谢!
网友回复:我做了一个取下一个字符串的方法:
public String getNextString(String next) {
char[] ac = next.toCharArray();
boolean flag = true;
StringBuffer buffer = new StringBuffer();
for (int i = (ac.length-1); i >= 0; i--) {
if (i == 0 && flag && (ac[0]-'Z' == 0)) {
buffer.append("AA");
break;
}
if (flag) {
if (ac[i] - 'Z' == 0) {
buffer.append('A');
} else{
buffer.append(getNextChar(ac[i]));
flag = false;
}
} else {
buffer.append(ac[i]);
}
}
return buffer.reverse().toString();
}
网友回复:
- Java code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ public static void main(String[] args)throws Exception { String str = "ABC"; char[] str_char = str.toCharArray(); char temp; boolean over = false; while(!over){ over = setChar(str_char.length-1,str_char); if(!over) System.out.println(getCharArrayString(str_char)); } } public static boolean setChar(int index,char[] chars){ if(index>=0){ char temp = chars[index]; temp ; if(temp>'Z'){ temp = 'A'; chars[index] = temp; index = index - 1; return setChar(index, chars); }else{ chars[index] = temp; return false; } }else{ return true; } } public static String getCharArrayString(char[] chars){ StringBuffer sb = new StringBuffer(); sb.append(chars); return sb.toString(); }
网友回复:写了个 比较简单的! 假如你要支持指定的字符串长度! 改下代码 把str_char的长度 改成你想要的长度就可以了
网友回复:首先:
A-Z有一个1-26的映射表
取得字符串例如 AAZ 1,1,26
对应的
算法
s = 1* 26的平方 1 * 26 26
得到值 for i = 1 to n
s = 1* 26的平方 1 * 26 26 i
转化为26进制,算法可参照转化2进制,具体不说了
例如转化为
1,1,1,1
则通过对应表
取得
AAAA
对应表可以考虑HashTable,数组均可阿。
具体代码不写了。
网友回复:上面的s要足够大阿。。呵呵 long差不多
要不然溢出可麻烦了
网友回复:比如:
把
char[] str_char = str.toCharArray();
改成
- Java code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ char[] str_char = new char[4]; str.getChars(0, str.length(), str_char, 0);
网友回复:这样!!!!!
比如:
把
char[] str_char = str.toCharArray();
改成
- Java code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ char[] str_char = new char[4]; str.getChars(0, str.length(), str_char, 0); str_char[3] = 'A'-1;
网友回复:有些乱,凑合能工作
- Java code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ public class Main { public static void main(String args[]) { String test="ZZZ"; for(int i=0;i<=3;i ){ test=addOne(test); System.out.println(test); } } public static String addOne(String seq){ char []buf=seq.toCharArray(); int count=1; for (int i = buf.length-1; i >=0; i--) { buf[i]=(char)(buf[i] count); if(buf[i]>'Z'){ buf[i]='A'; count=1; }else{ count=0; break; } } if(count==1){ char[] buf2=new char[seq.length() 1]; buf2[seq.length()]='A'; for (int i = seq.length()-1; i >=0; i--) { buf2[i]=buf[i]; } buf=buf2; } return new String(buf); } }
网友回复:感觉用进制比较轻易理解。
网友回复:
- Java code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ package testtest; public class Main { public static void main(String args[]) { //测试 String test = "AAAZ"; int n = 4;//你指定的n for (int i = 0; i < n; i ) { test = addOne(test); System.out.println(test); } } //实现字符串的加1操作 public static String addOne(String seq) { char[] buf = seq.toCharArray();//转换为数组轻易处理 int count = 1; //开始需要加1 for (int i = buf.length - 1; i >= 0; i--) {//从最后一个字符开始处理 buf[i] = (char) (buf[i] count);//加1 if (buf[i] > 'Z') { //有进位 buf[i] = 'A'; count = 1; //进位 } else { count = 0; break; //无进位直接跳出循环 } } if (count == 1) { //进位使数组长度增加1个的情况处理 char[] buf2 = new char[seq.length() 1]; buf2[seq.length()] = 'A';//最高位肯定是A for (int i = seq.length() - 1; i >= 0; i--) { buf2[i] = buf[i]; } buf = buf2; } return new String(buf); } }
网友回复:你是想计算EXCEL的列值吧? 我用26进制的方式写过,可以实现的.
网友回复:!markit!
关键字:请教,高手,请问,一个,字符串,问题,
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面