• 剑指Offer-翻转单词顺序


    题目描述:

    输入一个英文句子,翻转句子中单词的顺序,但单词内字符串的顺序不变。例如输入字符串:“I am a student”,则输出“student a am I”.

    算法分析

    1、思路:以空格为指定字符,对字符串的内容进行分割,并将分割后的字符放到字符数组中,然后交换位置
    2、难点分析:

    1. 如何以空格进行分割字符串,这就用到split();

    split()方法可以使字符串按指定的分隔字符或字符串对内容进行分割,并将分割后的结果存放在字符数组中。

    1. 如何把分割好的字符数组用字符串输出,使用public StringBuffer append(String s)方法

    该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变。String 类型和 StringBuffer还有StringBuffer 类型的主要性能区别: String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。StringBuffer 每次对对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。java.lang.StringBuilder一个可变的字符序列是5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。两者的方法基本相同。

    3、代码实现

    public static  String reverse(String str) {
    		StringBuffer stringBuffer = new StringBuffer("");// StringBuffer对象的初始化,
    		// 使用split()方法可以使字符串按指定的分隔字符或字符串对内容进行分割,并将分割后的结果存放在字符数组中。
    		String[] strSet = str.split(" ");
    		int length = strSet.length;
    		//位置交换,向stringBuffer 添加字符数组内容
    		for (int i = length - 1; i >= 0; i--) {
    			stringBuffer.append(strSet[i] + " ");
    		}
    		return stringBuffer.toString();
    	}
    
    作者:starryfeiii
    出处:http://www.cnblogs.com/feiii/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,原文链接否则保留追究法律责任的权利。
  • 相关阅读:
    监督学习——AdaBoost元算法提高分类性能
    监督学习——logistic进行二分类(python)
    监督学习——朴素贝叶斯分类理论与实践
    nrm 工具的使用
    Linux下安装MySQL
    Node环境配置
    07.移动端类库
    06.网页布局
    05.预处理器
    04.触屏事件
  • 原文地址:https://www.cnblogs.com/feiii/p/6416215.html
Copyright © 2020-2023  润新知