[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回の異または思想は素晴らしい.
別の配列に余分な空間を割り当てないで、入力配列をその場で修正し、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"]
考え方:
他の人の考え:
#! /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