zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    
  • 相关阅读:
    PDO预处理语句规避SQL注入攻击
    单例模式
    接口测试框架-[pytest+requests+excel]读取excel表格+requests参数化+pytest测试报告
    git 常用命令
    测试基础
    jmeter 安装
    软件测试常用网址
    MAC下安装配置Tomcat
    python 第六十二章 Django orm 跨表查询
    python 第六十二章 Django cookie和session
  • 原文地址:https://www.cnblogs.com/yh-simon/p/12905676.html
Copyright © 2011-2022 走看看