题解 | #最大子序列#

最大子序列

https://www.nowcoder.com/practice/17ba5b5df1fc49ca8d6cf8ea407b1972

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String s = in.nextLine();
        int index = -1;
        String result = "";
        List<Integer> list = new LinkedList<Integer>();
        while(index<s.length()-1){
            char max = 'a'-1;
            for(int i = index+1;i<s.length();i++){
                if(s.charAt(i)>max){
                    list.clear();
                    max = s.charAt(i);
                    list.add(i);
                }else if(s.charAt(i)==max){
                    list.add(i);
                }else{

                }
            }
            int p = 0;
            for(;p<list.size();p++){
                result+=s.charAt(list.get(p));    
            }
            index = list.get(p-1);
            list.clear();
        }
        if(result.charAt(result.length()-1)==s.charAt(s.length()-1)) System.out.println(result);
        else System.out.println(result+s.charAt(s.length()-1));
    }
}

实际上就是一直找最大的字符,如果最大的字符有两个及以上,用list存储它们的坐标,从最后一个最大字符的下一位再开始遍历。

全部评论

相关推荐

有没有友友知道这样是开启下一个志愿还是在池子里等人捞
早饭有梨:为什么有的是回到人才池,有的是变成筛选中,我二面挂直接变回筛选中了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务