zoukankan      html  css  js  c++  java
  • 反转字符串

    编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 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"]

    解法一:通过双指针

    class Solution {
        func reverseString(_ s: inout [Character]) {
            var low = 0
          var high = s.count - 1
          while low < high {
            s.swapAt(low, high)
            low += 1
            high -= 1
          }
        }
    }

    由于代码比较简单,不讲解,还有一种一行代码即可:

    class Solution {
        func reverseString(_ s: inout [Character]) {
            s.reverse()
        }
    }

    通过这个题目,发现另一种很不错的解法,是通过三次异或操作来交换两个值:

     public void reverseString(char[] s) {
            int end = s.length - 1;
            int half = end / 2;
            for (int i = 0; i < half && end >= 0; ++i, --end) {
                s[i] ^= s[end];
                s[end] ^= s[i];
                s[i] ^= s[end];
            }
     }

    我是只想到了第一种方法和简写版的,通过这个题目还是了解到了异或在交换值中的使用,希望对大家有所帮助!!!

  • 相关阅读:
    Facebook ads_Business Manager
    思维导图学习5——参考书目
    思维导图学习4——技巧2
    思维导图学习3——思维导图示例
    思维导图学习2——思维导图的用途
    思维导图学习1——元素介绍
    广告词条解释
    Twitter OAuth
    Twitter开发2
    Twitter REST API, Streaming API
  • 原文地址:https://www.cnblogs.com/guohai-stronger/p/11746758.html
Copyright © 2011-2022 走看看