• 剑指Offer-- 第58题 翻转字符串


    第58题 翻转字符串

    题目 输入一个英文句子,翻转句子中单词的顺序,单单词内字符的顺序不变。为简单起见,变电符号和普通字母一样处理。例如输入字符串“I am a student.”,则输出“student. a am I”.
    我的思路 想将其转为char数组,然后通过从后往前依次进行判断,同时使用到了StringBuilder,因为直接调用reverse可以进行字符串反转。

    import java.util.Stack;
    public class Solution {
        public String ReverseSentence(String str) {
           if (str == null || str.length() == 0) {
    			return str;
    		}
    		//考虑从后向前;
    		char[] chars=str.toCharArray();	
    		str = "";
    		StringBuilder temp = new StringBuilder("");
    		for(int i=chars.length-1;i>=0;i--) {		
    			if(chars[i]==32) { //空格;
    				if(!temp.equals("")) {
    					str+=temp.reverse();
    					temp = new StringBuilder("");;
    				}
    				str+=chars[i];
    			}else {
    				temp.append(chars[i]);
    			}
    		}
    		if(!temp.equals("")) { //这里需要最后判断一下,否则会出现遗漏;
    			str+=temp.reverse();
    			temp = new StringBuilder("");;
    		}
    		return str;
        }
    }
    

    剑指Offer的思想 两次翻转,先翻转整个句子,在依据空格分割,翻转单词,得到需要的句子。

    //和之前自己的方法差不多,只是前一种我自己从后开始遍历的;
    public static String ReverseSentence(String str) {
    		if (str == null || str.length() == 0) {
    			return str;
    		}
    	
    		StringBuilder mStr=new StringBuilder(str);
    		char[] chars = mStr.reverse().toString().toCharArray();
    		str="";
    		StringBuilder temp = new StringBuilder("");
    		for(int i=0;i<chars.length;i++) {		
    			if(chars[i]==32) { //空格,ASSCI为32;
    				if(!temp.equals("")) {
    					str+=temp.reverse();
    					temp = new StringBuilder("");;
    				}
    				str+=chars[i];
    			}else {
    				temp.append(chars[i]);
    			}
    		}
    		if(!temp.equals("")) {
    			str+=temp.reverse();
    			temp = new StringBuilder("");;
    		}
    		return str;
    		
    	}
    
    多思考,多尝试。
  • 相关阅读:
    Linux 高性能server编程——高级I/O函数
    中国儿童移动游戏市场解读 潜力巨大有待开发
    HDU 2152 Fruit (母函数)
    Currying vs Partial Application
    我的最爱Lambda演算——开篇
    函数式编程-数据结构+算法
    高阶函数 、高阶类型
    高阶函数-哈哈
    备份-泛函编程(23)-泛函数据类型-Monad
    高阶函数
  • 原文地址:https://www.cnblogs.com/LynnMin/p/9346334.html
Copyright © 2020-2023  润新知