package com.chinait.utils;
/**
* 算法输出(A后面的多少位的字符串,超过Z 则改为 AA 开始),相当于用26进制的加法过程,但是是由英文字母来定义的,使用场景在于处理escel 的列,行问题。
* @author saicy
*/
public class test {
static char[] strChar ;
public static void main(String[] args) {
String str = "ZZ";
System.out.println(str);
for(int i=0;i<10;i++){
strChar = str.toCharArray();
jinwei(0);
str = new String(strChar);
System.out.println(str);
}
}
/**
* 这里运算进位问题
* @param index
*/
public static void jinwei(int index){
char a = 'A';
int aint =(int)('A');
if((strChar.length-1)-index>=0){
int sc = (int)strChar[(strChar.length-1)-index];
if(sc- 25 >= aint){
jinwei(index+1);
//改变当前位回归A
strChar[(strChar.length-1)-index] = a;
}else{
//不需要进位时增加1
strChar[strChar.length-1-index] = (char)(sc+1);
}
}else{
//这里解决进位问题添加位数,例如:ZZ 进位 AAA (加1)
strChar[(strChar.length-1)-index+1] = a;
StringBuilder str = new StringBuilder();
str.append('A');
str.append(strChar);
strChar = str.toString().toCharArray();
}
}
}
注意:这个算法是本人原创,并测试成功代码100%能够运行,希望大家喜欢和支持!~