##### Short Problem Definition:

You are given a string and your task is to *swap cases*. In other words, convert all lowercase letters to uppercase letters and vice versa.

##### Link

##### Complexity:

time complexity is `O(N)`

space complexity is `O(N)`

##### Execution:

I had too much fun with this one, so I refuse to admit that there is a buildin swapcase() function. ASCII can be fun.

##### Solution:

```
def swap_case(s):
result = ""
for idx in xrange(len(s)):
ordinal = ord(s[idx])
if (ordinal >= ord('a') and ordinal <= ord('z')) or \
(ordinal >= ord('A') and ordinal <= ord('Z')):
result += chr(ordinal-ord('A')+32)%64+ord('A'))
else:
result += s[idx]
return result
```