【剑指Offer】44、翻转单词顺序列
题目描述
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
题解一:使用栈操作
public static String ReverseSentence(String str) {
////trim():删除了原始字符串头部和尾部的空格,这个语句意思为:字符串只有一个以上空格返回本身
if (str.trim().equals("") && str.length() > 0) {
return str;
}
Stack<Object> stack = new Stack<>();
String string = str.trim();
String[] strings = string.split(" ");//将字符串以空格隔开,拆分成为字符串数组
for(int i=0;i<strings.length;i++){
stack.push(strings[i]);
}
string = (String) stack.pop();
while (!stack.isEmpty()) {
string = string + " " + stack.pop();
}
return string;
}
题解二:StringBuffer字符串拼接
public static String ReverseSentence2(String str) {
if(str.trim().equals("")){
return str;
}
String[] a = str.split(" ");
StringBuffer sb = new StringBuffer();
for (int i = a.length; i >0;i--){
sb.append(a[i-1]);
if(i > 1){
sb.append(" ");
}
}
return sb.toString();
}
//测试
public static void main(String[] args) {
String string=" ";
System.out.println(string.trim().equals(""));//空字符串的结果为true
System.out.println(string.length());
String string1="student. a am I";
String s = ReverseSentence(string1);
String s1 = ReverseSentence2(string1);
System.out.println(s);
System.out.println(s1);
}
【剑指Offer】44、翻转单词顺序列的更多相关文章
- [剑指Offer] 44.翻转单词顺序列
题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“student ...
- 《剑指offer》翻转单词顺序列
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
- Go语言实现:【剑指offer】翻转单词顺序列
该题目来源于牛客网<剑指offer>专题. 例如,"student. a am I",正确的句子应该是"I am a student." Go语言实 ...
- 剑指Offer 44. 翻转单词顺序列 (字符串)
题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,"st ...
- 【剑指Offer】翻转单词顺序列 解题报告(Python)
[剑指Offer]翻转单词顺序列 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...
- 【Java】 剑指offer(58-1) 翻转单词顺序
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变 ...
- 【剑指offer】翻转单词顺序
转载请注明出处:http://blog.csdn.net/ns_code/article/details/27372033 题目描写叙述: JOBDU近期来了一个新员工Fish,每天早晨总是会拿着一本 ...
- 【剑指offer】翻转单词顺序,C++实现
原创博文,转载请注明出处! 本题牛客网地址 本题代码的github地址 本系列文章的索引地址 # 题目 # 思路 两次翻转,第一次翻转整个句子,第二次翻转每个单词(单词之间用逗号隔开) # ...
- 剑指offer44:翻转单词顺序列
1 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“stude ...
- 剑指 Offer 44. 数字序列中某一位的数字 + 找规律 + 数位
剑指 Offer 44. 数字序列中某一位的数字 Offer_44 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author Wale ...
随机推荐
- java开发规范学习
from 慕课网-明明如月-<阿里巴巴的Java开发手册> Integer缓存问题分析 1, Integer缓存[-128, 127]的数字,除此之外,将通过new创建. Long也是缓存 ...
- C++ char to string 方法
1. 使用string()构造函数方法 //method 1: the constructor of string() char c = 'F'; , c); cout << s ; 2. ...
- C# MemoryCache学习笔记
很多情况下需要用到缓存,合理利用缓存一方面可以提高程序的响应速度,同时可以减少对特定资源访问的压力.为了避免每次请求都去访问后台的 资源(例如数据库),一般会考虑将一些更新不是很频繁的.可以重用的数据 ...
- EF--封装三层架构IOC
为什么分层? 不分层封装的话,下面的代码就是上端直接依赖于下端,也就是UI层直接依赖于数据访问层,分层一定要依赖抽象,满足依赖倒置原则,所以我们要封装,要分层 下面这张图和传统的三层略有不同,不同之处 ...
- c#---Socean.Rpc之EasyProxy
目录 1.高性能RPC框架:Socean.RPC 2.Socean.RPC框架实测 3.Socean.Rpc之EasyProxy 简介 这几天给Socean.RPC加上了动态代理,简称EasyProx ...
- Linux kernel简介
内核体系设计分:单内核,微内核 windows是微内核设计. Linux是单内核设计,但充分借鉴了为微内核体系的优点,为内核引入了模块化机制. 内核的组成部分 kernel:内核核心,一般为bz压缩的 ...
- Python 爬取必应壁纸
import re import os import requests from time import sleep headers = { "User-Agent": (&quo ...
- HTML5中input新增类型+表单新增属性+其他标签属性
@ (猴头) Input 新增属性 email 邮箱(只在手机端有效) url 网址(只在iphone手机有效) tel 手机号(只在手机端有效) number 数字(右侧有上下按钮,只能输入 ...
- vue(七)--监听属性(watch)
1.watch:用来监听每一个属性的变化 2.watch这个对象里面都是函数,函数的名称是data中的属性名称,watch中的函数不需要调用 3.当属性发生改变那么就会触发watch函数,每个函数都会 ...
- Mac 终端 Tomcat 环境配置过程
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发而成.Tomc ...