文档章节

IT公司100题-10-翻转句子中单词的顺序

关西大汉弹琵琶
 关西大汉弹琵琶
发布于 2015/11/12 17:44
字数 341
阅读 152
收藏 5

问题描述:

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。

句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。

例如输入“Hello world!”,则输出“world! Hello”。

 

问题分析:

 使用String.split函数或者StringTokenizer

代码实现:

package oschina.mianshi;
/**
 * @project: oschina
 * @filename: IT10.java
 * @version: 0.10
 * @author: JM Han
 * @date: 15:49 2015/11/12
 * @comment: Test Purpose
 * @result:
 */

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import static tool.util.*;

public class IT10 {
   public static void main(String[] args) {
      try {
         System.out.println("Please input some sentence: ");
         InputStream in = System.in;
         InputStreamReader charsIn = new InputStreamReader(in);
         BufferedReader bufferedReader = new BufferedReader(charsIn);
         String str = bufferedReader.readLine();

         String[] fields = str.split("\\s+");
         for(int i = fields.length - 1; i >= 0; i--)
            System.out.print(fields[i] + " ");
      } catch (IOException e){
      }
   }
}

代码输出:

Please input some sentence: 
Hi. How a u there?
there? u a How Hi.

问题扩展:

如果要反转整个字符串呢?递归,非递归两种方法?

public static String reverse2NR(String str){
   return new StringBuilder(str).reverse().toString();
}

public static String reverse2R(String str){
   if(str == null || str.length() <= 1)
      return str;

   return reverse2R(str.substring(1)) + str.charAt(0);
}

某些单词不需要反转呢?

输入: 第一个字符串: "http://my.oschina.net/jimmyhan/blog"
子串: "jimmyhan"
输出: "golb/jimmyhan/ten.anihcso.ym//:ptth"

public static String reverse3(String str, String token){
   StringBuilder sb = new StringBuilder();
   String rtoken = new StringBuilder(token).reverse().toString();

   while(str.contains(token)){
      String s = str.substring(0, str.indexOf(token));
      sb.append(s).append(rtoken);
      str = str.substring(str.indexOf(token)+token.length());
   }
   //剩余的部分String
   sb.append(str);
   return sb.reverse().toString();
}


© 著作权归作者所有

关西大汉弹琵琶
粉丝 8
博文 41
码字总数 14221
作品 0
浦东
程序员
私信 提问
剑指offer 44. 翻转单词顺序列

原题 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a ...

dby_freedom
2018/11/24
0
0
[剑指offer] 翻转单词顺序列

本文首发于我的个人博客:尾尾部落 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但...

繁著
2018/07/26
0
0
【剑指offer】面试题 58:翻转单词顺序列

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/JinlongXu/article/details/95753265 题目描述 牛客最近来了一个新员...

Jinlong_Xu
07/13
0
0
翻转句子中单词的序列

题目 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“stude...

孟飞阳
2016/06/29
28
0
剑指Offer-翻转单词顺序列

题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student...

武培轩
2018/09/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
36分钟前
4
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
4
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
13
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
13
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部