iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0

題目說明
344. Reverse String
給定一個字元陣列 s,請就地 (in-place) 反轉。

  • 必須使用 O(1) 額外空間。
  • 直接修改陣列,不需要返回新的陣列。

範例:
Input: s = ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]

Input: s = ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]

程式碼
Python 解法

def reverseString(s):
left, right = 0, len(s) - 1
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1

Java 解法

class Solution {
public void reverseString(char[] s) {
int left = 0, right = s.length - 1;
while (left < right) {
char temp = s[left];
s[left] = s[right];
s[right] = temp;
left++;
right--;
}
}
}

複雜度分析

  • 時間複雜度:O(n),每個字元交換一次
  • 空間複雜度:O(1),只用兩個指標

Java vs Python 語法差異

  • Python 可以直接用 s[left], s[right] = s[right], s[left]同時交換兩個元素
  • Java 必須先用暫存變數 temp 才能交換
  • Python 不需要宣告陣列長度型別,Java 需要 char[] s

心得

相比昨天回文那題,這題不用條件判斷只是單純交換位置,可以熟悉指標控制。


上一篇
day9 Valid Palindrome
下一篇
day 11 Valid Anagram
系列文
不熟程式的我在leetcode打滾30天17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言