# Print the smallest character in the given string and the index
#   of the first occurrence of that character
#
# This might be helpful for getting started with HW2 Q2 (but has a
# problem due to an assumption that, as in Q2, you often can't make)
#
def smallestChar(inputString):
    
    currentMinChar = inputString[0]
    indexOfCurrentMin = 0

    currentIndex = 0
    while currentIndex < len(inputString):
        currentChar = inputString[currentIndex]
        
        if (currentChar < currentMinChar):
            currentMinChar = currentChar
            indexOfCurrentMin = currentIndex
 
        currentIndex = currentIndex + 1
    print("The smallest char is {} and occurs at position {}".format(currentMinChar, indexOfCurrentMin))
    
# The version above presumes inputString is not empty.
# This version does not.
def smallestChar2(inputString):
    currentMinChar = None
    indexOfCurrentMin = None
    
    currentIndex = 0
    while currentIndex < len(inputString):
        currentChar = inputString[currentIndex]
        
        if (currentMinChar == None) or (currentChar < currentMinChar):
            currentMinChar = currentChar
            indexOfCurrentMin = currentIndex
 
        currentIndex = currentIndex + 1
    if (currentMinChar == None):
        print("There is no min char in the input string")
    else:
        print("The smallest char is {} and occurs at position {}".format(currentMinChar, indexOfCurrentMin))

# Determine largest character (and its index) in inputString that is smaller
# than keyChar. Do not assume such a character exists.
#
def largestCharSmallerThan(keyChar, inputString):
    largestCharSoFar = None
    largestIndex = 0
    
    currIndex= 0
    while currIndex < len(inputString):
        currChar = inputString[currIndex]
        
        if currChar < keyChar:
            if (largestCharSoFar == None) or (currChar > largestCharSoFar): 
                largestCharSoFar = currChar
                largestIndex = currIndex
                
        currIndex = currIndex + 1
        
    if (largestCharSoFar == None):
        print("There are no characters in '{}' smaller than '{}'.".format(inputString, keyChar))
    else: 
        print("In '{}', the largest character smaller than '{}' is '{}' and occurs at position {}.".format(inputString, keyChar, inputString[largestIndex], largestIndex))
 


