def is_subsequence(str1 : str, str2 : str) -> bool:
    """
    Given two strings string1 and string2, finds if string1 is a subsequence of string2.
    
    A subsequence of a string is a new string that is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters.
    
    Parameters:
        string1: string being checked to be a subsequence
        string2: original string

    Returns:
        True if subsequence, else False
    """
    len_str1 : int = len(str1)
    len_str2 : int = len(str2)
    i : int = 0  
    j : int = 0  
    # Traverse both str1 and str2
    while i < len_str1 and j < len_str2:
        # Compare current character of str2 with str1
        if str1[i] == str2[j]:
            # If matched, then move to next character in str1
            i = i + 1
        j = j + 1
    return i == len_str1