• 算法--拼接最小字典序


    转载请标明出处http://www.cnblogs.com/haozhengfei/p/63b2460bceae42e55f0c2d150bde663b.html 


    拼接最小字典序

     
    拼接最小字典序练习
     

    第8节 拼接最小字典序练习题

     

    对于一个给定的字符串数组,请找到一种拼接顺序,使所有小字符串拼接成的大字符串是所有可能的拼接中字典序最小的。

    给定一个字符串数组strs,同时给定它的大小,请返回拼接成的串。

    测试样例:
    ["abc","de"],2
    "abcde"
     
     
    1
    import java.util.*;
    2
    
    
    3
    public class Prior {
    4
        public String findSmallest(String[] strs, int n) {
    5
            // 这里使用插入排序
    6
            for (int i = 1; i < strs.length; i++) {
    7
                // 当前需要排序的元素
    8
                String target = strs[i];
    9
                // j标记当前位置
    10
                int j = i;
    11
                while(j>0 && (target+strs[j-1]).compareTo(strs[j-1]+target) < 0){
    12
                    strs[j] = strs[j-1];
    13
                    j--;
    14
                }
    15
                strs[j] = target;
    16
            }
    17
            StringBuffer sb = new StringBuffer();
    18
            for(String str: strs){
    19
                sb.append(str);
    20
            }
    21
            return sb.toString();
    22
        }
    23
        //方法二,使用Arrays.sort()方法
    24
        public String findSmallest2(String[] strs, int n) {
    25
            if(strs == null){
    26
                return null;
    27
            }
    28
    
    
    29
            Comparator<String> c = new Comparator<String>() {
    30
                @Override
    31
                public int compare(String str1, String str2) {
    32
                    String str1first = str1 + str2;
    33
                    String str2first = str2 + str1;
    34
    
    
    35
                    return str1first.compareTo(str2first);
    36
                }
    37
            };
    38
    
    
    39
            Arrays.sort(strs, c);
    40
    
    
    41
            StringBuffer str = new StringBuffer();
    42
            for(int i = 0; i < n; i++){
    43
                str.append(strs[i]);
    44
            }
    45
    
    
    46
            return str.toString();
    47
        }
    48
    }
     
     
    您的代码已保存
    答案正确:恭喜!您提交的程序通过了所有的测试用例
     
     

     
  • 相关阅读:
    MyEclipse无法破解的某种解决方法
    SDK Manager无法打开,闪退问题
    虚拟机不能ping通宿主机问题的解决
    Ubuntu下文件编码转换
    二、vertica安装实践
    搭建Samba服务器
    vmtools安装
    一、vertica 安装注意事项
    MFC如何配置使用Win7风格的控件而不是XP风格控件
    VS静态编译
  • 原文地址:https://www.cnblogs.com/haozhengfei/p/63b2460bceae42e55f0c2d150bde663b.html
Copyright © 2020-2023  润新知