剑指 Offer 58 - I. 翻转单词顺序

Offer_58_1

题目描述

方法一:使用Split函数

package com.walegarrett.offer;

/**
* @Author WaleGarrett
* @Date 2021/2/12 17:38
*/ import java.util.Arrays; /**
* 题目描述:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
* 为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。
*/ /**
* 方法一:使用split函数
*/
public class Offer_58_1 {
public String reverseWords(String s) {
s = s.trim();
String[] strings = s.split(" ");
StringBuilder result = new StringBuilder();
for(int i=strings.length-1; i>=0; i--){
if(!strings[i].equals("")){
result.append(strings[i].trim());
result.append(" ");
}
}
return result.toString().trim();
}
}

使用双指针

/**

 * 方法二:使用双指针
*/
class Offer_58_1_2 {
public String reverseWords(String s) {
s = s.trim();
int j=s.length()-1,i=j;
StringBuilder stringBuilder = new StringBuilder();
while (i>=0){
while (i>=0 && s.charAt(i) != ' '){
i--;
}
stringBuilder.append(s.substring(i+1,j+1) + " ");
while(i>=0 && s.charAt(i) == ' ')
i--;
j=i;
}
return stringBuilder.toString().trim();
}
}

最新文章

  1. AngularJS之一个元素上绑定多个指令作用域
  2. 学习angular2
  3. MySQL中CURRENT_TIMESTAMP(转)
  4. php 接受处理二进制数据流并保存成图片
  5. android之ViewPager
  6. VS2010常用快捷键
  7. Windows环境配置Apache+Mysql+PHP
  8. HDU1150Machine Schedule(二分图最大匹配的DFS解法)
  9. <算法竞赛入门经典> 第8章 贪心+递归+分治总结
  10. ASP.NET用HttpListener实现文件断点续传
  11. 疯狂的表单-html5新增表单元素和属性
  12. 如何在内存中压缩并加密ZIP
  13. 视频编码器评测系统:VideoCodecRank
  14. spring cloud 入门系列七:基于Git存储的分布式配置中心
  15. 树莓派3B+通过路由器进SSH和VNC
  16. Linux中安装硬盘后对硬盘的分区以及挂载
  17. jquery 在页面上根据ID定位(jQuery锚点跳转及相关操作) 经典
  18. Win10系列:C#应用控件基础17
  19. 关于oracle的基础增删改查操作总结
  20. 遭遇:“传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确” 错误

热门文章

  1. Codeforces Round #579 (Div. 3) B Equal Rectangles、C. Common Divisors
  2. .NetCore快速上手Consul,留给自己一点思考的空间
  3. 轻松理解 Java开发中的依赖注入(DI)和控制反转(IOC)
  4. Java对象延迟初始化的实现
  5. 主动降噪,通话降噪及AI降噪之辨
  6. ELK Stack 介绍 & Logstash 日志收集
  7. hdu5303贪心
  8. 高并发之Semaphore、Exchanger、LockSupport
  9. Dell Display Manager for Mac
  10. React render algorithm & Fiber vs Stack