Microsoft Interview Question
Software EngineersCountry: United States
package com.concurrency.pkg;
public class RowLabel {
private static int ASCII_CONST = 64;
private static StringBuilder sb = new StringBuilder();
private static int getRowLabel(int number) {
if (number == 0) {
System.out.println(sb.reverse());
return 0;
}
int reminder = number % 26;
if(reminder == 0)
{
reminder = 26;
number = number -1;
}
int lastChar = ASCII_CONST + reminder;
String s = (new Character((char) lastChar)).toString();
sb.append(s);
return getRowLabel(number / 26);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
getRowLabel(4076);
}
}
a series of mod operations would do the trick
public class numLetters {
public static void main(String args[])
{
System.out.println( new StringBuilder(findLetters(1)).reverse().toString() );
}
public static String findLetters(int N)
{
String val = "null";
if(N>0)
{
int x = N % 26;
int y = (N-x)/26;
if(y>0)
{
val = getLetter(x)+findLetters(y);
}
else
{
return getLetter(x);
}
}
else
{
return " ";
}
return val;
}
public static String getLetter(int n)
{
String val = "";
switch(n)
{
case 0: val="z"; break;
case 1: val="a"; break;
case 2: val="b"; break;
case 3: val="c"; break;
case 4: val="d"; break;
case 5: val="e"; break;
case 6: val="f"; break;
case 7: val="g"; break;
case 8: val="h"; break;
case 9: val="i"; break;
case 10: val="j"; break;
case 11: val="k"; break;
case 12: val="l"; break;
case 13: val="m"; break;
case 14: val="n"; break;
case 15: val="o"; break;
case 16: val="p"; break;
case 17: val="q"; break;
case 18: val="r"; break;
case 19: val="s"; break;
case 20: val="t"; break;
case 21: val="u"; break;
case 22: val="v"; break;
case 23: val="w"; break;
case 24: val="x"; break;
case 25: val="y"; break;
default : val=" "; break;
}
return val;
}
}
def convert_to_alphabet(no, map):
no = int(no)
result = []
while no > 25:
rem = no%25
no = int(no/25)
result.append(map[str(rem)])
result.append(map[str(no)])
return result
map = {"0":"Z","1":"A", "2":"B", "3":"C", "4":"D", "5":"E", "6":"F", "7":"G", "8":"H", "9":"I", "10":"J", "11":"K","12":"L","13":"M","14":"N","15":"O","16":"P","17":"Q","18":"R","19":"S","20":"T","21":"U","22":"V","23":"W","24":"X","25":"Y"}
input = "7 1 25 26 27 51 52 676"
input = input.split(" ")
print(input)
for i in input:
print("".join(convert_to_alphabet(i, map)))
private static void getRowLabel(int num) {
// TODO Auto-generated method stub
char[] letters = {' ','A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
StringBuilder result = new StringBuilder();
while(num > 26)
{
result.append(letters[num%26]);
num /= 26;
}
result.append(letters[num%26]);
result.reverse();
System.out.println("Result is " + result);
}
class NumberToString {
func convertToString(number:Int) -> String?{
var string = String()
var remainder = number % 26
var quotient = number / 26
if remainder == 0{
remainder = 26
quotient -= 1
}
let c = Character(UnicodeScalar(64 + remainder))
if quotient > 0{
if let char = convertToString(quotient){
string = char
}
}
string.append(c)
return string
}
}
var inputNumber = 158278380461
var noToString = NumberToString()
var outputString = noToString.convertToString(inputNumber)
class NumberToString {
func convertToString(number:Int) -> String?{
var string = String()
var remainder = number % 26
var quotient = number / 26
if remainder == 0{
remainder = 26
quotient -= 1
}
let c = Character(UnicodeScalar(64 + remainder))
if quotient > 0{
if let char = convertToString(quotient){
string = char
}
}
string.append(c)
return string
}
}
var inputNumber = 158278380461
var noToString = NumberToString()
var outputString = noToString.convertToString(inputNumber)
C++ Program
}
- sourabhd.bitm.ece2k8 January 02, 2016