我将在Java中读取两个字符串。我想确定它的下一个增量是什么。以下是增量规则。
AA -> AB -> AC -> ... -> AZ -> BA -> BB -> ... -> ZZ -> AA
因此,如果我在AC
阅读,我会打印出AD
。
修改
我可以增加一个字符,例如System.out.println((char) ('C' + 1));
。所以我在考虑解析字符串,获取单个字符,只增加或减少char的值。环绕是什么让我,像AZ
- > BA
。不知道到底有什么最好的方法。你有什么想法
答案 0 :(得分:4)
public static String increment(final String p_source) {
final int first = (p_source.charAt(0) - 'A') * 26;
final int second = p_source.charAt(1) - 'A';
final int next = (first + second + 1) % (26*26);
return new String(new byte[] {(byte)(next / 26 + 'A'), (byte)(next % 26 + 'A')});
}
答案 1 :(得分:1)
如果它的2个字母的东西那么
public static String getString(String str){
String str1 = str;
str = str.ToLower();
char c1 = str.charAt(0);
char c2 = str.charAt(1);
if(c2<Z){
c2 = c2+1;
}else{
c2= 'A';
if(c1 < z){
c1 = c1+1;
}else{
//you put this thing
}
}
// return a string concating char
}
注意:只是一个演示,给你基本的想法
答案 2 :(得分:1)
你可以从每对中获取第二个字符并将其转换为ascii,然后将ascii压缩为1并将其连接回第一个字符。该站点向您展示如何在Java中将char转换为ascii:http://www.roseindia.net/java/java-conversion/CharToASCIIi.shtml
答案 3 :(得分:1)
将其解析为int,然后计算mod(26 * 26)
AA = 0 * 26 ^ 0 + 0 * 26 ^ 1 = 0
BA = 0 * 26 ^ 0 + 1 * 26 ^ 1 = 26
等...
然后您可以播放该号码并使用这些规则进行解析