天天看點

每日一道Leetcode——反轉字元串

題目:

每日一道Leetcode——反轉字元串

我的解法:

思路:判斷字元串中的字元是奇數個還是偶數個,分别從中心開始向首尾周遊交換。

class Solution {
    public void reverseString(char[] s) {
        int n = s.length;
        if(n==0){
            return;
        }
        if(n%2==0){
            int mid_left = n/2-1;
            int mid_right = n/2;
            int d = (n-2)/2;
            for(int i=0; i<=d; i++){
                char temp = s[mid_right+i];
                s[mid_right+i]=s[mid_left-i];
                s[mid_left-i] = temp;
            }
            return;
        }else if(n%2==1){
            int mid = (n-1)/2;
            int d = mid;
            for(int i=1; i<=mid; i++){
                char temp = s[mid+i];
                s[mid+i] = s[mid-i];
                s[mid-i] = temp;  
            }
            return;
        }
    }
}
           

官方題解:從兩邊向中間進行交換。

每日一道Leetcode——反轉字元串
class Solution {
    public void reverseString(char[] s) {
        int n = s.length;
        for (int left = 0, right = n - 1; left < right; ++left, --right) {
            char tmp = s[left];
            s[left] = s[right];
            s[right] = tmp;
        }
    }
}

作者:LeetCode-Solution
連結:https://leetcode-cn.com/problems/reverse-string/solution/fan-zhuan-zi-fu-chuan-by-leetcode-solution/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。