Epic Systems Interview Question
Software DevelopersCountry: United States
import java.util.HashMap;
public class Alphabet {
public static void main(String[] args) {
System.out.println(calculateString("ABC"));
System.out.println(calculateString("CBA"));
}
private static int calculateString(String str) {
HashMap<Character, Integer> map = generateHashMap();
char[] chars = str.toCharArray();
int i, sum = 0;
for (i = 0; i < chars.length - 1; i++) {
int firstValue = map.get(chars[i]);
int nextValue = map.get(chars[i + 1]);
if (firstValue > nextValue) {
sum += firstValue;
} else {
sum -= firstValue;
}
}
sum += map.get(chars[i]);
return sum;
}
private static HashMap<Character, Integer> generateHashMap() {
HashMap<Character, Integer> characterMap = new HashMap<>();
characterMap.put('A', 1);
characterMap.put('B', 13);
characterMap.put('C', 110);
return characterMap;
}
}
dict={'A':1,'B':13,'C':110}
def AlphaAndArabic(s):
individual_letter=list(s)
sum=dict[individual_letter[0]]
for i in range(1,len(s)):
curr=individual_letter[i]
if(i!=len(s)-1):
if(curr>=individual_letter[i-1]):
sum=-sum
sum-=dict[curr]
else:
sum+=dict[curr]
else:
sum+=dict[curr]
return(sum)
AlphaAndArabic("CBA")
dict={'A':1,'B':13,'C':110}
def AlphaAndArabic(s):
individual_letter=list(s)
sum=dict[individual_letter[0]]
for i in range(1,len(s)):
curr=individual_letter[i]
if(i!=len(s)-1):
if(curr>=individual_letter[i-1]):
sum=-sum
sum-=dict[curr]
else:
sum+=dict[curr]
else:
sum+=dict[curr]
return(sum)
AlphaAndArabic("CBA")
C# solution
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test
{
class AlphaAndarabic
{
public static Dictionary<string, int> alphabets;
public static void Main(string[] args) {
string letters = Console.ReadLine().Trim();
alphabets = new Dictionary<string, int>();
alphabets.Add("A", 1);
alphabets.Add("B", 13);
alphabets.Add("C", 110);
int result = alphaAndarabic(letters);
Console.WriteLine(Convert.ToString(result));
}
public static int alphaAndarabic(string pLetters) {
int nextIdx = 0;
int total = 0;
int valueCurrent = 0;
int valueNext = 0;
for (int i=0; i<pLetters.Length; i++){
valueCurrent = alphabets[Convert.ToString(pLetters[i])];
if (nextIdx + 1 < pLetters.Length)
{
nextIdx += 1;
valueNext = alphabets[Convert.ToString(pLetters[i + 1])];
}
else {
valueNext = 0;
}
if (valueCurrent < valueNext)
{
total = (Math.Abs(total) * -1);
total -= valueCurrent;
}
else {
total += valueCurrent;
}
}
return total;
}
}
}
- sudip.innovates October 13, 2017