字母递增
大写字母递增写法,A 到 B ,ZZ到AAA 的简单算法,欢迎指正和优化
import org.apache.commons.lang3.StringUtils;
public class LetterUtil {
private static String zmString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public static String generateRule(String code){
if (StringUtils.isEmpty(code)){
return "A";
}
//字母规则
int length = code.length();
int index = length -1;
boolean isCarry= false; //是否需进一位
String[] resulArray = new String[length+1];
System.arraycopy(code.split(""), 0, resulArray, 0, length);
for (int i = index; i > -1; i--) {
String c = resulArray[i];
if (i == index){
//需进位
if ("Z".equals(c)){
resulArray[i] ="A";
String s = resulArray[i - 1];
//前面一位编码是否进位
if ("Z".equals(s)){
isCarry =true;
}else {
//累加
int num = zmString.indexOf(s) + 1;
resulArray[i - 1] = zmString.substring(num,num+1);
}
}else {
//无需进位--累加
int num= zmString.indexOf(c) + 1;
resulArray[i] = zmString.substring(num,num+1);
}
continue;
}
if (isCarry){
resulArray[i] ="A";
if (i == 0){
resulArray[index+1]="A";
continue;
}
String s = resulArray[i - 1];
//前面一位编码是否进位
if ("Z".equals(s)){
isCarry =true;
}
}else {
return StringUtils.join(resulArray);
}
}
return StringUtils.join(resulArray);
}
public static void main(String[] args)throws Exception {
String s = generateRule("AABB");
System.out.println(s);
}
}