如果一串数据有较多的重复,我们可以记录重复的次数。例如:对于AAAAAAAAAABCBCBCBCBCBCAAAAADEFDEFDEFDEF.我们可以这么写:10A6BC5A4DEF.
原来39个字符,压缩后就是12个字符。请你编程把所给的信息进行压缩。
如果连续的子串没有重复,这串就计为1。例如:ABCDEF,压缩后是1ABCDEF.输入
AAAAAAAAAABCBCBCBCBCBCAAAAADEFDEFDEFDEF
NMNMNOOOPPPOOOPPP
DFGHJ
HELLO输出
10A6BC5A4DEF
2NM1N3O3P3O3P
1DFGHJ
1HE2L1O
要咋办?

解决方案 »

  1.   

    public static void main(String[] args){
            Scanner scanner = new Scanner(System.in);
            String inPut = scanner.nextLine();
            Map<String, Integer> map = new LinkedHashMap();
            for(int i = 0; i < inPut.length(); i++){
                String key = String.valueOf(inPut.charAt(i));
                if(map.containsKey(key)){
                    map.put(key, map.get(key)+1);
                }else{
                    map.put(key, 1);
                }
            }
            Set<String> keys = map.keySet();
            for(String s : keys){
                System.out.print(map.get(s) + s);
            }
        }
      

  2.   

    这个对于连续的字符可以,不过对于那种比如ABABAB要转换成3AB,这样的就不行了