deekshithreddypulgam's blog

By deekshithreddypulgam, history, 5 years ago, In English

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern;

public class Spreadsheets {

public static void main(String[] args) throws NumberFormatException, IOException {
    int noOfTestCases;
    InputStreamReader in = new InputStreamReader(System.in);
    BufferedReader input = new BufferedReader( in );
    noOfTestCases = Integer.parseInt(input.readLine());
    List < String > arrayOfStringsToConvert = new ArrayList < String > ();
    for (int i = 0; i < noOfTestCases; i++) {
        arrayOfStringsToConvert.add(input.readLine());
    }

    for (int i = 0; i < noOfTestCases; i++) {
        if (arrayOfStringsToConvert.get(i).startsWith("R") && Character.isDigit(arrayOfStringsToConvert.get(i).charAt(1))) {
            System.out.println(represenation1(arrayOfStringsToConvert.get(i)));
        } else {
            System.out.println(represenation2(arrayOfStringsToConvert.get(i)));
        }
    }

}

// R23C55 to BC23
private static String represenation1(String input) {
    int row;
    int column;
    Pattern p = Pattern.compile("[0-9]+");
    Matcher m = p.matcher(input);
    List < Integer > rowAndColumns = new ArrayList < > ();
    while (m.find()) {
        rowAndColumns.add(Integer.parseInt(m.group(0)));
    }
    row = rowAndColumns.get(0);
    column = rowAndColumns.get(1);

    //loop must traverse 
    int i = column;
    StringBuilder str = new StringBuilder();
    int remain;
    while (i > 26) {
        remain = i % 26;
        remain = remain == 0 ? 1 : remain;
        remain = remain + 65 - 1;
        str.append((char) remain);
        i = i / 26;
    }

    str.append((char)(i + 65 - 1));
    str.reverse();

    return str.append(row).toString();
}

// BC23 to R23C55
private static String represenation2(String input) {
    Pattern p = Pattern.compile("[A-Z]+");
    Matcher m = p.matcher(input);
    String col = null;
    while (m.find()) {
        col = m.group(0);
    }
    p = Pattern.compile("[0-9]+");
    m = p.matcher(input);
    int row = 0;
    while (m.find()) {
        row = Integer.parseInt(m.group(0));
    }
    int length = col.length();
    int magicNumer = 0;
    for (int i = length - 1; i >= 0; i--) {
        magicNumer = (int)(magicNumer + ((int) col.charAt(i) - 65 + 1) * Math.pow(26, length - i - 1));
    }
    StringBuilder out = new StringBuilder();
    return out.append('R').append(row).append('C').append(magicNumer).toString();
}

}

| Write comment?