leetcode-字符串-344-反转字符串

344. 反转字符串

题目描述(难度:简单)

(中文版)编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

示例1:

Input: [“h”,”e”,”l”,”l”,”o”]
Output: [“o”,”l”,”l”,”e”,”h”]

示例2:

Input: [“H”,”a”,”n”,”n”,”a”,”h”]
Output: [“h”,”a”,”n”,”n”,”a”,”H”]

解题思路

  • reverse 大法: JavaScript 数组 API reverse()
  • 交换法:遍历至中点,交换首尾字母的位置

代码

/**
 * reverse大法
 * @param {character[]} s
 * @return {void} Do not return anything, modify s in-place instead.
 */
var reverseString = function(s) {
    return s.reverse();
};

/**
 * 交换法-1
 * @param {character[]} s
 * @return {void} 
 */
var reverseString = function(s) {
    let len = s.length;
    let count = len >> 1;
    for(let i = 0 ; i < count; i++) {
        let temp = s[i];
        s[i] = s[len - 1 - i];
        s[len - 1 - i] = temp;
    }
    return s;
};

/**
 * 交换法-2
 * @param {character[]} 
 * @return {void} 
 */
var reverseString = function(s) {
    let left = 0,
        right = s.length - 1;

    while(left < right) {
        let t = s[left];
        s[left] = s[right];
        s[right] = t;
        left++;
        right--;
    }
    return s;
};

首尾交换法三

思路

  • 首尾替换法,逐位遍历,进行交换

详解

  • 1.设置变量 i = 0;
  • 2.替换字符串的第i位和倒数第 i 位,替换方式:使用es6的解构赋值进行变量的交换;
  • 3.变量 i + 1,继续替换替换字符串的第 i 位和倒数第 i 位;
  • 4.直到 i 大于字符串s的长度的中位数,完成真个字符串的反转
    /**
     * @param {character[]} s
     * @return {void} Do not return anything, modify s in-place instead.
     */
    const reverseString = function (s) {
        for(let i =0;i<s.length/2;i++){
            [s[i],s[s.length-1-i]] = [s[s.length-1-i],s[i]]
        }
        return s;
    };

首尾交换法四

思路

  • 中间变量首尾替换法,逐位遍历,进行交换

详解

  • 1.设置变量 i = 0;
  • 2.替换字符串的第i位和倒数第i位,替换方式:设置一个中间变量,替换两个字符串的值;
  • 3.变量 i + 1,继续替换替换字符串的第 i 位和倒数第 i 位;
  • 4.直到 i 大于字符串s的长度的中位数,完成真个字符串的反转
    /**
     * @param {character[]} s
     * @return {void} Do not return anything, modify s in-place instead.
     */
    const reverseString = function (s) {
        for(let i =0;i<s.length/2;i++){
            let temp = s[i]
            s[i] = s[s.length -1-i]
            s[s.length-1-i] =temp
        }
        return s;
    };

   转载规则


《leetcode-字符串-344-反转字符串》 朝飞 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
leetcode-字符串-387-字符串中的第一个唯一字符 leetcode-字符串-387-字符串中的第一个唯一字符
387. 字符串中的第一个唯一字符题目描述(难度:简单) 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 示例1: s = "leetcode" 返回 0.
2020-05-17
下一篇 
js-interview js-interview
点击一个input依次触发的事件 const text = document.getElementById('text'); text.onclick = function (e) { console.log(
2020-05-16
  目录