首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

算法-反转字符串与反转单词

题目: 将字符串内容进行倒置,比如 I like beijing. 经过函数后变为:.gnijied ekil I。...解题思路: 首先题目说的很明确,就是反转字符串,不是打印,也不是创建一个新的字符串,而是改变原数据,最简单的思路就是将第一个字符和最后一个交换,第二个和倒数第二个交换,依次循环,函数可以返回一个标志位...即便是使用栈或者递归,时间复杂度上也是一样的,而使用栈的话从后向前打印字符串会方便一些,但是这个题目要求我们改变原数据。...arr[after] = arr[before]^arr[after] ; arr[before] = arr[before]^arr[after]; } } 反转字符串的问题还可以有一些变体...,比如反转一句话中的单词: 题目: 将字符串内容单词进行倒置,比如 I like beijing.

1.5K80
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TypeScript算法题实战——字符串篇(字符串的反转、旋转、查询、KMP算法)

    字符串问题不仅基础且多样,还能延伸到动态规划、贪心算法和高级数据结构的应用。字符串的翻转、反复、旋转、替换、查询、KMP查找子串等都是很经典的题目。...掌握字符串的核心操作和优化技巧,是算法学习中的必备技能。...如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。...然后处理新的字符串数组,将其做反转就可以了。...典型问题:在字符串中查找目标子串首次出现的位置。判断两个字符串是否循环移位后相等。KMP算法的总时间复杂度为O(m+n),空间复杂度记为O(m)。

    18411

    字符串反转问题

    首先是我之前写的程序,同时这也是处理第一类的字符串反转问题,也就是输入This is a string., 输出为.gnirts a si sihT: #include #include...字符串反转问题的第二类问题是,对于This is a string,最终反转成string a is This。网上对于这个问题,有说用栈来处理。...我在看到这个要求,想到上面做的反转问题,觉得可以这样来做:首先,将整个字符串都反转,得到gnirts a si sihT,然后在对每个单词进行反转得到最终的结果,string a is This。...;iStart,旋转字符串开始位置;iEnd,旋转字符串结束位置 18 // 输出参数: char*,反转后字符串的指针; 19 // 描 述: 反转iStart到字符串iEnd之间的字符串 20...38 // 输出参数: char*,反转字符串后的指针 39 // 描 述: 按单词反转字符串 40 /*********************************************

    1K70

    【数据结构和算法】反转字符串中的单词

    一、题目描述 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。...1: 输入:s = "the sky is blue" 输出:"blue is sky the" 示例 2: 输入:s = " hello world " 输出:"world hello" 解释:反转后的字符串中不能存在前导空格和尾随空格...示例 3: 输入:s = "a good example" 输出:"example good a" 解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。...二、题解 2.1 方法一:双指针 思路与算法: 先去首尾空格。 倒序遍历字符串 s ,记录单词左右索引边界 i , j 。 每确定一个单词的边界,则将其添加至单词列表 res 。...2.2 方法二:分割 + 倒序 思路与算法: 以空格为分割符完成字符串分割后,若两单词间有 x>1 个空格,则在单词列表 strs 中,此两单词间会多出 x−1 个 “空单词” (即 "" )。

    28310

    必会算法:反转链表Ⅱ

    ##题目 上一篇文章咱们解决了如何反转整个链表的问题 那么如何反转一个链表的一部分节点呢?...(3节点) 第二部分链表的结尾节点(7节点) 第三部分链表的起始节点(8节点) ##算法图解 考虑到指定的反转范围可能是从第一个节点开始的 我们需要先定义一个“-1”节点 令“-1”节点的next...指向链表的起始节点 然后按照解题思路就能顺利解题了 结合“必会算法:反转链表Ⅰ”中定义的节点,我们可以定义以下几个节点来标记关键节点 第一部分链表的起始节点:”-1“节点的next节点 第一部分链表的结尾节点...pointerEnd.next = pre; head.next = cur; return pointer.next; } 算法时间复杂度...O(end),end为要求反转范围的截止位置 算法空间复杂度O(1) 测试一下 public static void main(String[] args) { Node head =

    48540
    领券