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

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

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

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

    字符反转问题

    首先是我之前写的程序,同时这也是处理第一类的字符反转问题,也就是输入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 /*********************************************

    91870

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

    一、题目描述 给你一个字符串 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 个 “空单词” (即 "" )。

    16710

    必会算法反转链表Ⅱ

    ##题目 上一篇文章咱们解决了如何反转整个链表的问题 那么如何反转一个链表的一部分节点呢?...(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 =

    47140

    必会算法反转链表Ⅰ

    ##题目 给定一个链表head,要求反转这个链表 链表节点定义如下 package com.dai.common; public class Node { public Integer value...可以采用整体法的思路 在第二种情况的基础上,将前两个节点看成一个整体,当作一个节点 此时pre还是指向的“第一个节点”,cur还是指向的第二个节点 那这样问题就简单了,还是采用第二种情况的方式反转链表就行了...依此类推 只需要搞定前两种情况 剩下的情况放到一个循环中做一样的处理就行 ##算法图解 如下图是一个拥有八个节点的链表 为了方便理解,我们cur.next也作为一个单独的指针定义出来 此时可以将...pre指向第一个节点 cur指向第二个节点 因为第一个节点在反转后是需要指向null的 所以此时pre.next=null 接着判断一下cur是否为null 不为null则需要将cur.next指向pre...同样的方法进行pre、cur、next指针的变动 只要cur或者next不为null,就可以一直走下去 直到最后,cur或者next为null 链表也反转完成了 pre指向的链表就是反转后的链表啦!

    25120
    领券