def remove_characters(source: str, chars_to_remove: str) -> str:
"""
Return a new string with all characters from chars_to_remove
removed from source.
Time complexity: O(n + m)
Space complexity: O(m)
where:
n = len(source)
m = len(chars_to_remove)
"""
forbidden = set(chars_to_remove)
return "".join(ch for ch in source if ch not in forbidden)
def main() -> None:
first = "programming language"
second = "rogy"
result = remove_characters(second, first)
print(f'First: "{first}"')
print(f'Second: "{second}"')
print(f'Result: "{result}"')
if __name__ == "__main__":
main()
'''
run:
First: "programming language"
Second: "rogy"
Result: "y"
'''