zoukankan      html  css  js  c++  java
  • 翻转单词顺序列


    例如,"student. a am I",正确的句子应该是 "I am a student."


    解题思路

    先使用空格将字符串切割为字符串数组,再重新拼接新的字符串

    public class Solution {
        public String ReverseSentence(String str) {
            if(str == null || str.trim().length() == 0) {
                return str;
            }
            String[] strs = str.split(" ");
            StringBuilder sb = new StringBuilder();
            for(int i = strs.length - 1; i >= 0; i--) {
                sb.append(strs[i]);
                if(i != 0) {
                    sb.append(" ");
                }
            }
            return sb.toString();
        }
    }
    

    第二种思路,先翻转整个句子,然后,依次翻转每个单词,依据空格来确定单词的起始和终止位置

    public class Solution {
        
        public String ReverseSentence(String str) {
            if(str == null || str.trim().length() == 0) {
                return str;
            }
            char[] chars = str.toCharArray();
            reverse(chars, 0, chars.length - 1);
            int blank = -1;
            for(int i = 0; i < chars.length; i++) {
                if(chars[i] == ' ') {
                    int nextBlank = i;
                    reverse(chars, blank + 1, nextBlank - 1);
                    blank = nextBlank;
                }
            }
            // 对最后一个单词单独进行反转
            reverse(chars, blank + 1, chars.length - 1);
            return new String(chars);
        }
    
        public void reverse(char[] chars, int low, int high){
            while(low < high){
                char temp = chars[low];
                chars[low] = chars[high];
                chars[high] = temp;
                low++;
                high--;
            }
        }
    }
    

  • 相关阅读:
    spring基于xml导入配置文件
    spring中bean的继承和依赖关系
    spring整合junit
    spring新注解说明
    Web微信开发工具无法输入中文?官方bug
    vue踩坑 导出new Vue.Store首字母要大写
    关于vue ui组件
    vue组件的生命周期
    Vue的指令以及组件化开发
    webpack的npm扩展使用
  • 原文地址:https://www.cnblogs.com/Yee-Q/p/13863975.html
Copyright © 2011-2022 走看看