Published on

Cracking the Coding Interview

Table of Contents

https://lucidar.me/en/web-dev/list-of-supported-languages-by-prism/


Arrays and Strings

1.1 - Is Unique

bool isUnique(string input) {
if (input.length() > 128 ) return false;
bool charArray[128] = {false};
for (int i = 0; i < input.length(); i++) {
int val = input[i];
if (charArray[val]) {
string rtn = "Non-unique: " + input;
cout << rtn << endl;
return false;
}
charArray[val] = true;
}
string rtn = "Unique: " + input;
std::cout << rtn << std::endl;
return true;
}

1.2 - Check Permutation

def check_permutation(input1, input2):
arr1 = []
arr2 = []
if len(input1) != len(input2):
return False
for x in input1:
s1 = input1.count(x)
s2 = input2.count(x)
if s1 != s2:
return False
for y in input2:
s1 = input1.count(y)
s2 = input2.count(y)
if s1 != s2:
return False
return True

1.3 - URLify

def urlify(inputString, stringLen):
rtn = ""
count = 0
for x in inputString:
<0:
return rtn
if x == ' ':
rtn += "%20"
stringLen -= 1
else:
rtn += x
stringLen -= 1
print(rtn)
return rtn

1.5 - One Away

def one_away(ogstring, editstring):
if ogstring == editstring:
print("True - " + ogstring + " " + editstring)
return True
if abs(len(ogstring) - len(editstring)) > 1:
print("False - " + ogstring + " " + editstring)
return False
ogrtn = []
editrtn = []
for x in ogstring:
if x not in editstring:
ogrtn += x
for y in editstring:
if y not in ogstring:
editrtn += y
# print("----")
# print(ogString + " " + editString)
# print("ogrtn: " + str(ogrtn))
# print("editrtn: " + str(editrtn))
# print("----")
if ((len(ogrtn) == len(editrtn)) and (len(ogrtn) == 1)) or (len(ogrtn) == 0 and len(editrtn) == 1) or \
((len(ogrtn) == 1) and (len(editrtn) == 0)):
print("True - " + ogstring + " " + editstring)
return True
else:
print("False - " + ogstring + " " + editstring)
return False
# Tests
if __name__ == '__main__':
one_away("hi", "hi")
one_away("hi", "hii")
one_away("hi", "hiii")
one_away("hi", "ho")
one_away("hi", "he")
one_away("hi", "h")
one_away("pale", "ple")
one_away("pales", "pale")
one_away("pale", "bale")
one_away("pale", "bake")

1.6 - String Compression

def string_compression(inputstring):
strarr = []
rtn = ""
for x in inputstring:
strarr += x
idx = 0
count = 0
curr = strarr[idx]
while idx < len(strarr):
if curr == strarr[idx]:
count += 1
if idx - 1 > 0:
curr = strarr[idx - 1]
else:
curr = strarr[idx]
if idx == (len(strarr) - 1):
rtn += curr + str(count)
else:
count += 1
rtn += curr + str(count)
count = 0
curr = strarr[idx]
# print("e - " + strarr[idx])
idx += 1
# print(strarr)
print(rtn)
return rtn