初级算法-字符串-反转字符串

作者: coenen | 来源:发表于2021-08-16 07:15 被阅读0次
    编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。

    不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
    你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

    摘一个示例做个说明.
    示例 1:
    输入:["h","e","l","l","o"]
    输出:["o","l","l","e","h"]
    
    条件分析:
    1. 以字符数组给出 -> 数据源是数组
    2. 不能分配额外空间 -> 原地修改
    解决思路1:
    1. 根据分析1,直接采用数组反转
    系统数组反转方式,获得数据反转
    解决思路2:

    1.根据分析1,采用循环交换

    采用递归和双指针.递归数组一半长度,交换起始位置和末尾对应位置内容即可
    解决思路3:

    1.根据分析1,采用循环交换

    采用循环和双指针.循环数组一半长度,交换起始位置和末尾对应位置内容即可

    代码实现-Swift版本:

    思路1代码:

    func reverseString(_ s: inout [Character]) {
        // 数组反转
        s.reverse()
    }
    

    思路2代码:

    func reverseString(_ s: inout [Character]) {
        // 递归、双指针
        var index = 0
        while index < s.count / 2 {
            s.swapAt(index, s.count - 1 - index)
            index += 1
        }
    }
    

    思路3代码:

    func reverseString(_ s: inout [Character]) {
        // 循环、双指针
        for i in 0 ..< s.count / 2 {
            s.swapAt(i, s.count - 1 - i)
        }
    }
    

    测试用例:

    var chars: [Character] = ["1","2","s","g","#","&","d","m","i"]

    考察要点:

    • 递归
    • 双指针
    • 字符串

    相关文章

      网友评论

        本文标题:初级算法-字符串-反转字符串

        本文链接:https://www.haomeiwen.com/subject/otkjbltx.html