天天看點

leetcode-翻轉數組-344

/**
<p>編寫一個函數,其作用是将輸入的字元串反轉過來。輸入字元串以字元數組 <code>s</code> 的形式給出。</p>

<p>不要給另外的數組配置設定額外的空間,你必須<strong><a href="https://baike.baidu.com/item/原地算法" target="_blank">原地</a>修改輸入數組</strong>、使用 O(1) 的額外空間解決這一問題。</p>

<p> </p>

<p><strong>示例 1:</strong></p>

<pre>
<strong>輸入:</strong>s = ["h","e","l","l","o"]
<strong>輸出:</strong>["o","l","l","e","h"]
</pre>

<p><strong>示例 2:</strong></p>

<pre>
<strong>輸入:</strong>s = ["H","a","n","n","a","h"]
<strong>輸出:</strong>["h","a","n","n","a","H"]</pre>

<p> </p>

<p><strong>提示:</strong></p>

<ul>
    <li><code>1 <= s.length <= 10<sup>5</sup></code></li>
    <li><code>s[i]</code> 都是 <a href="https://baike.baidu.com/item/ASCII" target="_blank">ASCII</a> 碼表中的可列印字元</li>
</ul>
<div><div>Related Topics</div><div><li>遞歸</li><li>雙指針</li><li>字元串</li></div></div><br><div><li>👍 640</li><li>👎 0</li></div>
*/

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public void reverseString(char[] s) {
        int n = s.length;
        if(n<2){
            return ;
        }

        reverse(s,0,n-1);

    }

    void reverse(char[] nums, int start, int end) {
        char temp;
        while (start < end) {
            temp = nums[start];
            nums[start] = nums[end];
            nums[end] = temp;
            start++;
            end--;
        }
    }
}
//leetcode submit region end(Prohibit modification and deletion)