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

作者: 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"]

考察要点:

  • 递归
  • 双指针
  • 字符串

相关文章

  • LeetCode初级算法--字符串01:反转字符串

    LeetCode初级算法--字符串01:反转字符串 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件...

  • 反转字符串

    LeetCode探索初级算法字符串类 题目 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 c...

  • JAVA中对字符串的常见处理函数汇总

    字符串 看到字符串,想到字符串处理中,有字符串的反转,初级面试中常用到字符串分割成字符串组,初级面试中常用到字符串...

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

    编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分...

  • 算法

    字符串反转 给定字符串"hello, world",实现将其反转。 链表反转 有序数组合并 Hash算法 在一个字...

  • W3Cschool JavaScript脚本算法编程实战 初级脚

    初级脚本算法 1. 翻转字符串算法挑战 实战翻转字符串算法 你可以先把字符串转化成数组,再借助数组的reverse...

  • 初级算法-字符串-整数反转

    给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号...

  • FreeCodeCamp Basic Algorithm Scr

    FreeCodeCamp 初级算法 个人笔记,仅作留档 Reverse a String 翻转字符串先把字符串转化...

  • FreeCodeCamp初级算法部分学习

    原文:FreeCodeCamp初级算法部分学习 Reverse a String 翻转字符串 先把字符串转化成数组...

  • 字符串问题

    算法:字符串问题 字符串反转 1、问题描述:问题描述:给定一个字符串,将字符串前面若干个字符移动到字符串尾部例: ...

网友评论

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

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