[LeetCode][Python]344. 文字列の反転

1333 ワード

[LeetCode][Python]344. 反転文字列は、入力した文字列を反転させる機能を記述します.入力文字列は、文字配列char[]として与えられます.
別の配列に余分な空間を割り当てないで、入力配列をその場で修正し、O(1)の余分な空間を使用してこの問題を解決する必要があります.
配列内のすべての文字がASCIIコードテーブルの印刷可能な文字であると仮定できます.
例1:
入力:["h","e","l","l","o"]出力:["o","l","l","e","h"]例2:
入力:["H","a","n","n","a","h"]出力:["h","a","n","n","a","H"]
考え方:
  • Pythonによるスライス操作[:-1]
  • は、2つのポインタi jがそれぞれStringの両端に位置し、中心に向かって文字を近づけて交換すればよい.

  • 他の人の考え:
  • 3回または操作:異または演算交換変数値は余分な空間を必要とせず、3回の異または思想は素晴らしい.
  • #! /usr/bin/env python
    #coding=utf-8
    class Solution(object):
        def reverseString(self, s):
            """
            :type s: List[str]
            :rtype: None Do not return anything, modify s in-place instead.
            """
            i = 0
            j = len(s) - 1
    
            while i < j:
                s[i] = chr(ord(s[j]) ^ ord(s[i]))
                s[j] = chr(ord(s[j]) ^ ord(s[i]))
                s[i] = chr(ord(s[j]) ^ ord(s[i]))
                i += 1
                j -= 1
    
        def reverseString2(self, s):
            i, j = 0, len(s) -1
            while i < j:
                s[i], s[j] = s[j], s[i]
                i += 1
                j -= 1