现在有如下规律:
A:1 B:2 C:3.....Z:26  AA:27  AB:28.....请实现 int getNumByCol(String col)
  用 java 帮实现了 谢谢

解决方案 »

  1.   

    这个得借助ASCII了public int getNumByCol(String col){
    int sum = 0;

    if(!Pattern.matches("[A-Za-z]+", col)){
    throw new RuntimeException("the col must be a Letter");
    }

    char[] charArr = col.toLowerCase().toCharArray();
    int len = charArr.length;
    for (int i = 0; i < len; i++) {
    sum += ((int)charArr[i] - 96) * (int)Math.pow(26, len - i -1);
    }

    return sum;
    }
      

  2.   

    /**
     * 可以看作是26进制,A转化成int为65,但是A代表1
     * @param name
     * @return
     */
    public int getNumByColName(String name){
    //如果不符合返回-1
    if(!Pattern.matches("[A-Z]+", name)){
    return -1;
    }
    int len=name.length();
    int count=0;
    int sum=0;
    //AB可以看成B乘以26的0次幂,A可以看成26的一次幂结果相加
    for(int i=len-1;i>=0;i--){
    sum+=(power(26, count))* ( (int)name.charAt(i)-64 );
    count++;
    }

    return sum;
    }
    /**
     * a的b次幂
     * @param a
     * @param b
     * @return
     */
    public int power(int a,int b){
    if(a<=0||b<0){
    throw new RuntimeException();
    }

    int sum=1;
    for(int i=0;i<b;i++){
    sum*=a;
    }
    return sum;
    }