java翻转单词顺序split_剑指offer解题报告(Java版)——翻转单词顺序 左旋字符串 42...
引言
这种翻转的问题会遇到很多,其实就是一个倒序的问题,对于第一个题只是想翻转单词的顺序,而并不想把整个字符串翻转了,如果完全翻转的话,比如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...相关推荐
- java计算筛子概率_剑指Offer解题报告(Java版)——n个骰子的点数 43
问题 n个骰子朝上的数之和为s,求s的所有可能以及概率 分析问题 如果是用笨方法,一般人最开始都会想到笨方法,那就是枚举法 举个例子,比如两个骰子,第一个骰子的结果为1,2,3,4,5,6,两个骰子的 ...
- java 数组中某个数出现的概率_剑指Offer解题报告(Java版)——排序数组中某个数的个数 38...
分析问题 问题只需要找到排序数组中某个数K的个数,由于已经是排序了,K一定是在一堆的,所以我们只需要找到第一个K的index1,然后找到最后一个K的index2就可以了 而寻找K的过程我们一般通过二分 ...
- 剑指offer——面试题42-2:翻转单词顺序
剑指offer--面试题42-2:翻转单词顺序 20180906整理 Solution1: 自己想的垃圾算法 对于c++中的string对象,substr()和erase()函数都是很常用的,常见用法 ...
- 剑指 Offer(专项突击版)Java 持续更新....
剑指 Offer(专项突击版) 刷题链接: https://leetcode-cn.com/problem-list/e8X3pBZi/?page=1 No.001 题目: 整数除法 1. 刷题链接: ...
- 剑指offer——面试题14:调整数组顺序使奇数位于偶数前面
剑指offer--面试题14:调整数组顺序使奇数位于偶数前面 Solution1: 顺序交换,比较好的算法!!! class Solution { public:void reOrderArray(v ...
- 剑指offer有python版吗_剑指Offer算法类题目[Python版]
标签:重复 作用 coding 面试 medium mba none fas utf-8 面试题012 数值的整数次方 解题思路1 考虑所有情况,循环连乘 代码: de ...
- 代码随想录算法训练营第八天|● 344.反转字符串● 541. 反转字符串II● 剑指Offer 05.替换空格● 151.翻转字符串里的单词● 剑指Offer58-II.左旋转字符
一.344.反转字符串 力扣 思路:很简单的一个for循环双指针,left和right交换. class Solution {public void reverseString(char[] s) { ...
- 代码随想录算法训练营第八天|344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词 剑指Offer58-II.左旋转字符串
一.344.反转字符串 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的 ...
- 二叉树代码 java面试题_《剑指offer》面试题39 二叉树的深度(java)
摘要: 今天翻到了<剑指offer>面试题39,题目二中的解法二是在函数的参数列表中通过指针的方式进行传值,而java是没有指针的,所以函数要进行改造.然而我翻了下别人的java版本(我就 ...
最新文章
- Java中Filter、Servlet、Listener的学习
- dnf拍卖行计算机在线,DNF助手拍卖行在哪里 拍卖行物价实时查询
- RuoYi-Cloud 进阶篇_03( Seata 高可用集群与 NacosConfig配置中心整合)
- 接待员如何向客人upsell_如何提升自我做好客户服务与管理?
- Chapter 1: Motion Blur
- 【优化算法】混沌单纯形法算子布谷鸟搜索优化算法【含Matlab源码 1193期】
- CAD如何导出PDF格式
- 新益华基层医疗系统使用方法_家中更换新路由器了,但不知道如何替换?可以尝试使用这种方法...
- 2017cad光标大小怎么调_把cad光标变大的方法步骤详解
- 使用Android Studio 开发地图案例之二(展示普通图、卫星图、交通流量图和百度城市热力图)
- windows server 硬盘满了怎么清理?
- ssh连接服务器 一段时间不动后 无响应
- tensorflow2.0——预测泰坦尼克号旅客生存概率(Keras应用实践)
- python 自定义函数的返回值
- 计算机文档软件,电脑文档软件
- Python爬虫新手入门教学(十八):爬取yy全站小视频
- 【Div+CSS笔记】 0x02 css入门
- 计算机毕业设计 机器视觉智能快递分拣系统
- 搭建阿里云ecs服务器之安装图形化界面的方法
- 《北上广深杭》都有哪些最值得加入的互联网大厂