zoukankan      html  css  js  c++  java
  • 【5】基本字符串压缩

    【题目】

    利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。
    给定一个string iniString为待压缩的串(长度小于等于10000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。
    测试样例
    "aabcccccaaa"
    返回:"a2b1c5a3"
    "welcometonowcoderrrrr"
    返回:"welcometonowcoderrrrr

    【代码】

    import java.util.*;
    
    public class Zipper {
        public String zipString(String iniString) {
           
            if(iniString == null || iniString.length() <= 0){
                return iniString;
            }
            
        
            Map<Character,Integer> map = new HashMap<>();
            int len = iniString.length();
            StringBuilder sb = new StringBuilder(len);
            
            int count = 0;
            int index1 = 0;
            int index2 = 1;
            for(int i = 0; i < len; i++){
                if(index2 < len && (iniString.charAt(index1) == iniString.charAt(index2))){
                    index2++;
                }else{
                    count = index2 - index1;
                    sb.append(iniString.charAt(index1)).append(count);
                    index1 = index2;
                    index2 = index1 + 1;
                }
            }
                                          
           if(sb.length() >= len){
                return iniString;
            }
            return sb.toString();
                                  
        }
    }

     【题目2】

    “aaabccccdeff”处理为”a3bc4def2”,请编写程序。

    只有一个字符不需要写数字。

    【代码】

    package 远景能源;
    
    import java.util.*;
    
    /**
     * “aaabccccdeff”处理为”a3bc4def2”,请编写程序。
     * @author GenshenWang.nomico
     *
     */
    public class Zipper {
        public static String zipString(String iniString) {
           
            if(iniString == null || iniString.length() <= 0){
                return iniString;
            }
        
            Map<Character,Integer> map = new HashMap<>();
            int len = iniString.length();
            StringBuilder sb = new StringBuilder(len);
            
            int count = 0;
            int index1 = 0;
            int index2 = 1;
            
            for(int i = 0; i < len; i++){
                char c = iniString.charAt(index1);
                if(index2 < len && iniString.charAt(index2) == c){
                    index2++;
                }  else{
                    count = index2 - index1;
                    index1 = index2;
                    index2++;
                    sb.append(c);
                    if(count > 1){
                        sb.append(count);
                    }
                }
            }
            return sb.toString();
        }
        
        public static void main(String[] args) {
            System.out.println(zipString("aaabccccdeff"));
        }
    }
  • 相关阅读:
    第二次项目冲刺(Beta阶段)--第六天
    Struts2+Hibernate简单整合
    Struts中Action的相关知识点
    struts基础配置
    servlet基础及过滤器简介
    JSP中验证码问题
    mybatis中插入数据(id为主键的情况)以及查询数据
    Mybatis基础配置及使用
    JDBC访问数据库
    Mysql中的一些基本操作
  • 原文地址:https://www.cnblogs.com/noaman/p/6919713.html
Copyright © 2011-2022 走看看