• java字符统计+字符串压缩


    要实习了。突然发现自己好像什么都不会,就去看看题吧。在网上看到一个字符串压缩的题。看了一眼,感觉用python很简单。一个for循环+字典就可以搞定。

    但是呢,主要还是java。下面就用java来实现一下。未检测长度是否小于10000

    题目:

    利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。

    给定一个string iniString为待压缩的串(长度小于等于10000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。

    测试样例
    "aabcccccaaa"
    返回:"a2b1c5a3"


    这道题的思路借助python思路实现。在python中,简洁的语法可以轻松实现、
    但是呢,java也是非常不错的。
    思路如下:
    字符统计,用到map集合。key存放我们的字符串,values存放个数。 在python中是字典,java中是map
    把字符串分割成数组,循环。把当前字符存如map集合。如果集合里面没有当前key,则设置values为1,否则value+1即可。用三目表达式即可
    一开始写的时候。以为map和python字典一样,可以有一个默认返回值。测试发现如果当前key没有内容,返回的是null。
    执行完以上操作。就可以统计到每个字符的个数了。
    字符串压缩里面统计好的map循环。判断每个key的value是否不等于1。如果不等于1,说明存在相同的字符。则标注一下。
    最后根据标注状态,打印即可。
    public class Demo {
        
        
         public static void checkDifferent(String iniString) {
                 Map<String, Integer> map=new HashMap<>();
                 String[] a=    iniString.split("");
                 for (String string : a) {
                     map.put(string, map.get(string)==null?1:map.get(string)+1);
    
                }
                 boolean flag=true;
                 for (Map.Entry<String, Integer>  m: map.entrySet()) {
                    if(m.getValue()!=1) {
                        flag=false;
                    }
                }
                 if(flag) {
                     System.out.println(iniString);
                 }else {
                     for (Map.Entry<String, Integer> m : map.entrySet()) {
                        System.out.print(m.getKey()+m.getValue());
                    }
                 }
            }
            
            
            
    public static void main(String[] args) {
        checkDifferent("aabbc");
    }
    一万年太久,只争朝夕!
  • 相关阅读:
    DataTable 只保留想要的几列
    如何用多个字符串来切分字符串
    用.net 发送邮件
    sqlserver 行列转换
    sql面试题一 学生成绩
    将DataReader转换为DataTable
    C# 如何用多个字符串来切分字符串并去除空格
    SqlServer按时间自动生成生成单据编号
    实验一 Java开发环境的熟悉
    Java学习笔记心得——初识Java
  • 原文地址:https://www.cnblogs.com/chaoba/p/10009783.html
Copyright © 2020-2023  润新知