将字符串翻转

 

举例:翻转字符串“algorithm”

准备两个指针,一个从前到中间遍历,一个从后向中间遍历,交换两个指针所指的字符。

注意:由于无法直接修改字符串里的字符,所以必须先把字符串变换为数组,然后再运用这个算法。

 

class Solution:
    def reverseString(self, s):
        """
        :type s: str
        :rtype: str
        """
        s = list(s)
        i, j = 0, len(s) - 1
        while i < j:
            s[i], s[j] = s[j], s[i]
            i += 1
            j -= 1
        return "".join(s)


a = "abdfdf"
solution = Solution()
print(solution.reverseString(a))  # fdfdba

 

数组的优缺点

 优点:

  • 构建非常简单

  • 能在 O(1) 的时间里根据数组的下标(index)查询某个元素

 缺点:

  • 构建时必须分配一段连续的空间
  • 查询某个元素是否存在时需要遍历整个数组,耗费 O(n) 的时间(其中,n 是元素的个数)
  • 删除和添加某个元素时,同样需要耗费 O(n) 的时间

posted on 2020-11-17 21:32  星河赵  阅读(155)  评论(0编辑  收藏  举报

导航