67,513
社区成员
发帖
与我相关
我的任务
分享
public static String getNextColumn(String current) {
String result = "";
if (! current.toUpperCase().matches("[A-Z]+")) {return result;}
char[] c = current.toUpperCase().toCharArray();
c[c.length-1] += 1;
int up = 0;
for (int i=c.length-1; i>=0;i--) {
c[i] += up;
up = (c[i] - 'A') / 26;
result = (char)(up == 0 ? c[i] : c[i]-26*up) + result;
}
result = (char)(up == 0 ? 'A' : 'A'+up-1) + result; //漏了最高位了
return result;
}
调用
System.out,println(getNextColumn("ZZ"));
//模拟26进制,末位+1,然后判断进位
public static String getNextColumn(String current) {
String result = "";
if (! current.toUpperCase().matches("[A-Z]+")) {return result;} //入力内容限制A-Z
char[] c = current.toCharArray(); //获取每位的字符
c[c.length-1] += 1; //末位+1
int up = 0; //进位标志
for (int i=c.length-1; i>=0;i--) {
c[i] += up; //当前位置字符+进位
up = (c[i] - 'A') / 26; //当前位置字符如果超26则进位
result = (char)(up == 0 ? c[i] : c[i]-26*up) + result; //如无进位则取当前字符,有进位则减去发生进位的部分
}
return result;
}
调用
System.out,println(getNextColumn("AZ")); private static String getNextUpEn(String en){
if(en==null || en.equals("") || en.equals("Z"))
return "A";
char lastE = 'Z';
int lastEnglish = (int)lastE;
char[] c = en.toCharArray();
if(c.length>1){
return null;
}else{
int now = (int)c[0];
if(now >= lastEnglish)
return null;
char uppercase = (char)(now+1);
return String.valueOf(uppercase);
}
}
public class Test {
public static void main(String[] args) {
nextString(new String("ABCDEFGHIJKLMNOPQRSTUVWXYZ"), "BZ");
}
public static String nextString(String charList,String inchar){
charList = charList.toUpperCase();
inchar = inchar.toUpperCase();
StringBuilder outchar = new StringBuilder();
for(String index : inchar.split("")){
outchar.append(charList.charAt((charList.indexOf(index) + 1)%charList.length()));
}
return outchar.toString();
}
}