字典序最大子序列

2018-04-20  本文已影响0人  肆意咯咯咯
题目.jpg
       <script>
            function fn(str){
                var arr = str.split("");
                alert(arr);
                var arr1 = [];
                var arr2 = [];
                var str ={};
                for(var i=0;i<arr.length;i++){
                    var sum="";
                    for(var j=i;j<arr.length;j++){
                        if(i!=j){
                            str=arr[i]+arr[j];
                            arr1.push(str);
                        }
                        console.log(arr1);
                        sum = sum+arr[j];
                        arr2.push(sum);
                        console.log(arr2);  
                    }
                }
            arr2=arr1.concat(arr2);
            console.log(arr2);
            arr2=arr2.sort();
            alert(arr2[arr2.length-1]); 
            }
            fn("test");
        </script>
穷举法,有点浪费空间和时间,但是,比较容易理解;
首先,将传入的字符串分割成数组,然后架构一个两层循环,有两种字串截取方式,第一种,就是当i不等于j时,令 str=arr[i]+arr[j];放入数组arr1,如例子“test”,即将字串te,ts,tt,es,et,st放入数组arr1中,第二种, 就是将字符串连接拼接,中间无相隔,sum = sum+arr[j];放入数组arr2中。即字符串t,te,tes,test,e,es,est,s,st,t;然后用concat数组连接,将他们连接成一个数组,用sort排序将字符串排序,也就是它的字典序,返回排序后的数组的最后一个值,也就是字典序的最大子序列,完成题目。

emmmm。。。。。。我暂时只能想出来这个方法,如果以后有看到好的方法,会再来补充,加油!

上一篇 下一篇

猜你喜欢

热点阅读