这个函数的功能是 如输入“s” 返回值123, 现在请大侠帮忙写个逆程序 输入123 得到 “s”
private int decode(String s) {
   int i;
   char[] ac;
   int j;
   int k;
   i = 0;
   ac = s.toCharArray();
   j = 0;
   k = ac.length;
   while (j < k) {
    i = (31 * i) + ac[j];
    j++;
   }
   return Math.abs(i);
}java算法数学解码

解决方案 »

  1.   

    public char getChar(int i){
     for(char c='A';c<'z';c++){
     int n=c;
     if(n==i){
     return c;
     }
     }
     return ' ';
    }
      

  2.   

    你这方法得到的就是  hashCode?,
    (char)i; 单个字符就能逆
      

  3.   

    只会在输入限制在a-z的..而且没弄明白取abs之后怎么转..public static void main(String[] args) {
    int value = decode("abc");
    System.out.println(value);
    System.out.println(encode(value));
    } private static int decode(String s) {
    int i;
    char[] ac;
    int j;
    int k;
    i = 0;
    ac = s.toCharArray();
    j = 0;
    k = ac.length;
    while (j < k) {
    i = (31 * i) + ac[j];
    j++;
    }
    return Math.abs(i);
    } private static String encode(int value) {
    StringBuffer sb = new StringBuffer();
    while (value > 0) {
    int target = value % 31;
    while (target < 97) {
    target += 31;
    }
    value -= target;
    value /= 31;
    sb.append((char) target);
    }
    return sb.reverse().toString();
    }目测这个只能转5位字符以内的..坐等大神