qingd7
BAN USERCan be solved use a recursive method:
import java.util.HashMap;
public class FindTheKthString {
private static HashMap<Integer, StringBuffer> letterCode = new HashMap<Integer, StringBuffer>();
static {
for (int i = 1; i < 26; i++) {
letterCode.put(i, new StringBuffer(Character.toString((char) (i + 96))));
letterCode.put(0, new StringBuffer(Character.toString((char) (26 + 96))));
}
}
private static StringBuffer getTheStringAtKthPosition(int i) {
int lastIndex = i%26;
int step = (i-1)/26;
if(step==0)
{
return new StringBuffer(letterCode.get(lastIndex));
}
else
{
return getTheStringAtKthPosition(step).append(letterCode.get(lastIndex));
}
}
public static void main(String[] args) {
for(int index=700;index<=740;index++)
{
System.out.println(index+" "+getTheStringAtKthPosition(index));
}
}
}
Can somebody check if this code is correct?
- qingd7 May 18, 2012