从此封心@ 2021-10-20 18:17 采纳率: 82.4%
浏览 36
已结题

不嫌多的话两题写下代码,嫌多就写第一题,第二题写下递归的思想

//1 有一个字符串 String s = "aabbbc" 求字符串中每个字符的出现次数
//结果 a 2 b 3 c 1

//提高要求
//将结果按照字符的出现次数升序输出
//结果  c a b

//2 提高题 输入一个字符串 通过递归 返回逆序字符串
//比如"abc" 递归方法 返回"cba"
  • 写回答

1条回答 默认 最新

  • Mattie chen 2021-10-20 19:58
    关注
    
            public static void main(String[] args) {
                ArrayList<Character> arrayList = new ArrayList<Character>();
                String s="aabbbc";
    
                //将字符串转为字符数组后遍历其元素存储到list集合中
                char[] c=s.toCharArray();
                for (char c1:c){
                    arrayList.add(c1);
                }
    
                //统计字符出现的次数
                //创建一个Map集合,字符作为键,字符出现的次数为值,当遇到相同的键时,值加加
                HashMap<Character, Integer> map = new HashMap<>();
                for (char c1:arrayList){
                    //定义i记录字符数
                    int i;
                    //判断集合中是否含有该键
                    if(map.containsKey(c1)){
                        i=map.get(c1);
                        i++;
                        map.put(c1,i);
                    }else {
                        //第一次出现的设置键值为1
                        map.put(c1,1);
                    }
                }
    
                //遍历map集合
                Set<Character> characters = map.keySet();
    
                for (char c1:characters){
                    int i=map.get(c1);
                    System.out.println(c1+"有"+i+"个");
                }
    
                ////提高要求
                ////将结果按照字符的出现次数升序输出
    
                System.out.println("-------------------");
                ArrayList<Character> cc = new ArrayList<>();
                for (char c1:characters){
                   cc.add(c1);
                }
    
                Collections.reverse(cc);
                for (Character character : cc) {
                    System.out.print(character+",");
                }
            }
    

    ---第二题 :

    public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            String next = scanner.next();
    
            String s = myReverse(next);
    
            System.out.println(s);
        }
    
        public static  String myReverse(String str){
    
            if (str ==null||str.length() <= 1)
            {
                return str;
            }
    
            return myReverse(str.substring(1))+str.charAt(0);
        }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月21日
  • 已采纳回答 10月20日
  • 创建了问题 10月20日

悬赏问题

  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)