• 5413.重新排列句子中的单词


    image-20200517154537330

    提示

    • text 以大写字母开头,然后包含若干小写字母以及单词间的单个空格。
    • 1<=text.length<=10^5

    冒泡排序

    思路

    • 排序肯定能解决问题 当时用的是冒泡排序 O(n^2)
    /**
     * 1000ms
     */
    public String arrangeWords(String text) {
        String s1 = text.toLowerCase();
        String[] s = s1.split(" ");
        int len=s.length;
        for(int i=0;i<len-1;i++){
            for(int j=0;j<len-i-1;j++){
                if(s[j].length()>s[j+1].length()){
                    String tmp=s[j];
                    s[j]=s[j+1];
                    s[j+1]=tmp;
                }
            }
        }
        char[] cs=s[0].toCharArray();
        cs[0]-=32;
        String first=String.valueOf(cs);
        String ans=first;
        for(int i=1;i<len;i++){
            ans+=" "+s[i];
        }
        return ans;
    }
    

    根据长度建立字符串长度数组

    参考 清风:根据长度建立字符串长度数组

    • 根据字符串分割将对应长度的字符串 放入声明对应下标的数组字符串中,然后遍历。(很妙!)

    代码

    /*
     * 时间复杂度 O(n)
     * 60ms
     */
    public String arrangeWords(String text) {
             
           String[] strs = new String[(int)Math.pow(10, 5) + 1];
            String[] inputStrs = text.split(" ");
    
            int count = 1;
            for (String str : inputStrs) {
                //下标即为单词的长度
                int index = str.length();
                //如果是首位单词
                if (count == 1) {
                    strs[index] = str.toLowerCase();
                }else {//(同样的长度下)在已有的基础上 继续添加单词
                    /*
                    if (strs[index] == null) {
                        strs[index] =  str;
    
                    } else {
                        strs[index] = strs[index] + " "+ str;
                    }*/
                    strs[index] = (strs[index] == null ? str : (strs[index] + " " + str));
                }
                count++;
            }
    		
         	//拼接
            StringBuilder builder = new StringBuilder();
            for (String res : strs) {
                if (res == null || res.equals("")) continue;
                builder.append(" " + res);
            }
         	//首单词的首字母大写
            String firstChar =  builder.toString().trim().charAt(0)+"";
            String leftStr = builder.toString().trim().substring(1);
            return firstChar.toUpperCase()+leftStr;
        }
    }
    
  • 相关阅读:
    括号序列
    秘密信息
    大奖赛
    订单
    摆花
    利用spring自己实现观察者模式
    Spring操作mongo排序,限制查询记录数
    Hbse的读写过程
    使用aop记录数据库操作的执行时间
    分享一个关于jackson的Json工具类
  • 原文地址:https://www.cnblogs.com/yh-simon/p/12905676.html
Copyright © 2020-2023  润新知