引言

这种翻转的问题会遇到很多,其实就是一个倒序的问题,对于第一个题只是想翻转单词的顺序,而并不想把整个字符串翻转了,如果完全翻转的话,比如I am a student.中所有字符翻转得到.tneduts a ma I。显然不符合要求,但已经很接近答案了,仔细观察可以发现,我们离最终答案只差一步,就是把每个空格切分出的字符串再一次反序即可,所以我们需要根据空格切分出每个单词,然后再把每个单词翻转了,然后再重新组合成句子

ps.书中只要求最后答案是student. a am I就可以了,但是我觉得这个.很碍事,其实对原来的句子可以不考虑最后的.进行翻转,也就是把array.length-1变成array.length-2

对于第二个题也是对reverse函数的变形调用,很多其实都是想通的,左旋字符串abcdefg,index=2,有时候问题不要跳太大,慢慢一步一步转的话我们就可以发现解题的关键所在,如果我们需要旋转的话应该如何去转

因为最后会想要成cdefgab,也就是把ab移到了后面,而之前的reverse也可以把前面的移到后面,我们不让先将整个reverse一下,gfedcba,这个与我们想要的有什么不同,如果我们c和b之间有个空格的话gfedc ba是不是再翻转一下每个单词的顺序就ok了,我们这里分别对gfedc和ba再次调用一下reverse函数就ok,这里我们可能会用到substring这个函数

分析问题

翻转单词

我们先把整个句子翻转,然后以空格为split,分割字符串,接下来对每个单词再进行翻转,然后重新组合

翻转字符串的函数

static String reverse(String string) {

char[] array = string.toCharArray();

int i = 0, j = array.length - 1;

while (i < j) {

char tem = array[i];

array[i] = array[j];

array[j] = tem;

i++;

j--;

}

return String.valueOf(array);

}

翻转整个句子的函数

static String reverseSentence(String string){

String reversedString=reverse(string);

String[] splitStrings=reversedString.split(" ");

String resultString="";

for(String str:splitStrings){

resultString=resultString+reverse(str)+" ";

}

return resultString;

}

左旋字符串

我们首先也把整个字符串翻转,然后切分字符串,利用substring函数,将gfedc和ba分别赋值给part1和part2,然后分别对part1和part2翻转,然后将翻转后的字符串再连起来就可以了

java翻转单词顺序split_剑指offer解题报告(Java版)——翻转单词顺序 左旋字符串 42...相关推荐

  1. java计算筛子概率_剑指Offer解题报告(Java版)——n个骰子的点数 43

    问题 n个骰子朝上的数之和为s,求s的所有可能以及概率 分析问题 如果是用笨方法,一般人最开始都会想到笨方法,那就是枚举法 举个例子,比如两个骰子,第一个骰子的结果为1,2,3,4,5,6,两个骰子的 ...

  2. java 数组中某个数出现的概率_剑指Offer解题报告(Java版)——排序数组中某个数的个数 38...

    分析问题 问题只需要找到排序数组中某个数K的个数,由于已经是排序了,K一定是在一堆的,所以我们只需要找到第一个K的index1,然后找到最后一个K的index2就可以了 而寻找K的过程我们一般通过二分 ...

  3. 剑指offer——面试题42-2:翻转单词顺序

    剑指offer--面试题42-2:翻转单词顺序 20180906整理 Solution1: 自己想的垃圾算法 对于c++中的string对象,substr()和erase()函数都是很常用的,常见用法 ...

  4. 剑指 Offer(专项突击版)Java 持续更新....

    剑指 Offer(专项突击版) 刷题链接: https://leetcode-cn.com/problem-list/e8X3pBZi/?page=1 No.001 题目: 整数除法 1. 刷题链接: ...

  5. 剑指offer——面试题14:调整数组顺序使奇数位于偶数前面

    剑指offer--面试题14:调整数组顺序使奇数位于偶数前面 Solution1: 顺序交换,比较好的算法!!! class Solution { public:void reOrderArray(v ...

  6. 剑指offer有python版吗_剑指Offer算法类题目[Python版]

    标签:重复   作用   coding   面试   medium   mba   none   fas   utf-8 面试题012 数值的整数次方 解题思路1 考虑所有情况,循环连乘 代码: de ...

  7. 代码随想录算法训练营第八天|● 344.反转字符串● 541. 反转字符串II● 剑指Offer 05.替换空格● 151.翻转字符串里的单词● 剑指Offer58-II.左旋转字符

    一.344.反转字符串 力扣 思路:很简单的一个for循环双指针,left和right交换. class Solution {public void reverseString(char[] s) { ...

  8. 代码随想录算法训练营第八天|344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词 剑指Offer58-II.左旋转字符串

    一.344.反转字符串 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的 ...

  9. 二叉树代码 java面试题_《剑指offer》面试题39 二叉树的深度(java)

    摘要: 今天翻到了<剑指offer>面试题39,题目二中的解法二是在函数的参数列表中通过指针的方式进行传值,而java是没有指针的,所以函数要进行改造.然而我翻了下别人的java版本(我就 ...

最新文章

  1. Java中Filter、Servlet、Listener的学习
  2. dnf拍卖行计算机在线,DNF助手拍卖行在哪里 拍卖行物价实时查询
  3. RuoYi-Cloud 进阶篇_03( Seata 高可用集群与 NacosConfig配置中心整合)
  4. 接待员如何向客人upsell_如何提升自我做好客户服务与管理?
  5. Chapter 1: Motion Blur
  6. 【优化算法】混沌单纯形法算子布谷鸟搜索优化算法【含Matlab源码 1193期】
  7. CAD如何导出PDF格式
  8. 新益华基层医疗系统使用方法_家中更换新路由器了,但不知道如何替换?可以尝试使用这种方法...
  9. 2017cad光标大小怎么调_把cad光标变大的方法步骤详解
  10. 使用Android Studio 开发地图案例之二(展示普通图、卫星图、交通流量图和百度城市热力图)
  11. windows server 硬盘满了怎么清理?
  12. ssh连接服务器 一段时间不动后 无响应
  13. tensorflow2.0——预测泰坦尼克号旅客生存概率(Keras应用实践)
  14. python 自定义函数的返回值
  15. 计算机文档软件,电脑文档软件
  16. Python爬虫新手入门教学(十八):爬取yy全站小视频
  17. 【Div+CSS笔记】 0x02 css入门
  18. 计算机毕业设计 机器视觉智能快递分拣系统
  19. 搭建阿里云ecs服务器之安装图形化界面的方法
  20. 《北上广深杭》都有哪些最值得加入的互联网大厂

热门文章

  1. 优先级队列(头条面试题)
  2. linux 查端口 三种,Linux查看端口常用的三种用例
  3. linux系统各文件夹的作用,linux系统文件夹的作用 good
  4. 目标检测遮挡问题及解决方案汇总
  5. Anaconda 默认环境
  6. fatal error C1075: “{”: 未找到匹配令牌
  7. win10 ndk hello_world
  8. 自动白平衡之完美反射算法原理及C++实现
  9. redis操作大数据
  10. CFNet 论文解读