diff --git a/src/tools/types.py b/src/tools/types.py index 68c652c..4632100 100644 --- a/src/tools/types.py +++ b/src/tools/types.py @@ -13,8 +13,26 @@ class Integer(int): class String(str): def swap(self, x: int, y: int) -> String: + x, y = min(x, y), max(x, y) return String(self[:x] + self[y] + self[x + 1 : y] + self[x] + self[y + 1 :]) + def rotate(self, n: int) -> String: + if n == 0: + return self + while n < 0: + n += len(self) + while n > len(self): + n -= len(self) + return String(self[-n:] + self[: len(self) - n]) + + def reverse(self, start: int = 0, end: int = None) -> String: + if end is None: + end = len(self) - 1 + return String(self[:start] + "".join(reversed(self[start : end + 1])) + self[end + 1 :]) + + def __getitem__(self, item) -> String: + return String(super().__getitem__(item)) + class List(list): pass