从此封心@ 2021-10-20 19:25:06
求求大佬,帮忙写下代码每行加下注释,谢谢 1 有一个字符串 String s="aabbbc" 求字符串中每个字符的出现字数 (基础) 结果 a 2 b 3 c 1 提高要求 对象比较器接口 将结果按照字符的出现次数升序输出 结果 c 1 a 2 b 3 2 (提高题) 输入一个字符串 通过递归 返回逆序字符串 比如 "abc" 递归的方法 返回"cba" public static String daoXu(String s){ //s="abc" return "cba"; }
...全文
216 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
从此封心@ 2021-10-27
  • 打赏
  • 举报
回复
谢谢
monkeydbo 2021-10-27
  • 打赏
  • 举报
回复 1

// 第二题 标准的递归

img

monkeydbo 2021-10-27
  • 打赏
  • 举报
回复

// 第一题很不错,涉及很多 Java 基础知识:字符串、字符、Map、List、循环、迭代器、比较器
import java.util.*;

/**

  • test

  • @author hubo

  • @since 2021/10/27 8:56

  • /
    public class Test {

    public static void main(String[] args) {

      Test test = new Test();
      System.out.println(test.charCountStatistical("aabbbc"));
    

    }
    /**

    • Description:

    • @author hubo

    • @date 2021/10/27 8:58

    • @param inputStr 输入字符串

    • @return java.lang.String 返回统计结果

    • /
      public String charCountStatistical(String inputStr){//以下注释假设 inputStr = "aabbbc"
      /

      • 思路:扫描字符串的每个字符,然后找一个可以存储字符和数量的方案
      • 扫描:
      • 直接用 charAt() ,或者把 String 转成 char[] ,都一样
      • 结果存储方案:
      • 方法一:利用 Map,key存字符,value存数量。但是这个方案没有办法排序
      • 方案二:自建一个对象存储 Object{字符,数量},用 List 存储所有结果,再用一个 Map 来存储字符的统计结果再 List 的什么位置存放
      • 提高要求:
      • 比较器:利用 Java 提供的比较强接口
      • */
        // 定义一个 List 存放所有的统计结果
        List resultList = new ArrayList();
        // 定义一个 Map 对象,用来记录每个统计结果的位置
        Map<Character,Integer> map = new HashMap<>();
        // 循环遍历 inputStr 中的每一个字符
        for (int i = 0 ; i < inputStr.length(); i++){
        char currentCharacter = inputStr.charAt(i); // 当前字符
        // 从 map 中查询当前字符的统计数据是否存在
        if (map.containsKey(currentCharacter)){
          int index = map.get(currentCharacter);         // 查询统计数据存放位置
          int count = resultList.get(index).getCount();  // 获取统计数据
          resultList.get(index).setCount(count + 1);     // 更新统计数据
        
        }else {
          CharCount charCount = new CharCount(currentCharacter,1);  //  之前没有统计过,新建一个
          resultList.add(charCount);                                      //  保存到结果中
          map.put(currentCharacter,resultList.size()-1);                  //  记录统计结果存放位置
        
        }
        }

      // 创建一个自己的比较器对象
      MyComparator myComparator = new MyComparator();
      // 利用比较强排序
      resultList.sort(myComparator);

      // 遍历 resultList 获取输出结果 (使用迭代器遍历)
      String resultStr = "";
      Iterator iterator = resultList.iterator();
      while (iterator.hasNext()){

        CharCount next = iterator.next();
        resultStr += next.getC() + " " + next.getCount() + " ";
      

      }

      // 去除结果最后面的空格
      resultStr = resultStr.substring(0,resultStr.length() - 1);

      return resultStr;
      }

    // 自建一个比较器,比较 CharCount , 根据 CharCount 的 count 成员升序
    class MyComparator implements Comparator{

      @Override
      public int compare(CharCount o1, CharCount o2) {
          return o1.getCount() - o2.getCount();
      }
    

    }

    // 自建一个内部类,存放字符和数量
    class CharCount{

      char c;
      int count;
    
      public CharCount(char c, int count) {
          this.c = c;
          this.count = count;
      }
    
      public char getC() {
          return c;
      }
    
      public void setC(char c) {
          this.c = c;
      }
    
      public int getCount() {
          return count;
      }
    
      public void setCount(int count) {
          this.count = count;
      }
    

    }
    }

郑老师 老师 2021-10-28
  • 举报
回复
@monkeydbo 能不能重新排版一下....代码和文字交错在一起
monkeydbo 2021-10-28
  • 举报
回复
@郑老师 import java.util.*; ///// // &lt;p&gt; test &lt;/p&gt; // // @author hubo // @since 2021/10/27 8:56 /// public class Test { public static void main(String[] args) { Test test = new Test(); System.out.println(test.charCountStatistical("aabbbc")); } ///// // Description: // @author hubo // @date 2021/10/27 8:58 // @param inputStr 输入字符串 // @return java.lang.String 返回统计结果 ///// public String charCountStatistical(String inputStr){//以下注释假设 inputStr = "aabbbc" /// // 思路:扫描字符串的每个字符,然后找一个可以存储字符和数量的方案 // 扫描: // 直接用 charAt() ,或者把 String 转成 char[] ,都一样 // // 结果存储方案: // 方法一:利用 Map,key存字符,value存数量。但是这个方案没有办法排序 // 方案二:自建一个对象存储 Object{字符,数量},用 List 存储所有结果,再用一个 Map 来存储字符的统计结果再 List 的什么位置存放 // 提高要求: // 比较器:利用 Java 提供的比较强接口 ///// // 定义一个 List 存放所有的统计结果 List&lt;CharCount&gt; resultList = new ArrayList(); // 定义一个 Map 对象,用来记录每个统计结果的位置 Map&lt;Character,Integer&gt; map = new HashMap&lt;&gt;(); // 循环遍历 inputStr 中的每一个字符 for (int i = 0 ; i &lt; inputStr.length(); i++){ char currentCharacter = inputStr.charAt(i); // 当前字符 // 从 map 中查询当前字符的统计数据是否存在 if (map.containsKey(currentCharacter)){ int index = map.get(currentCharacter); // 查询统计数据存放位置 int count = resultList.get(index).getCount(); // 获取统计数据 resultList.get(index).setCount(count + 1); // 更新统计数据 }else { CharCount charCount = new CharCount(currentCharacter,1); // 之前没有统计过,新建一个 resultList.add(charCount); // 保存到结果中 map.put(currentCharacter,resultList.size()-1); // 记录统计结果存放位置 } } // 创建一个自己的比较器对象 MyComparator myComparator = new MyComparator(); // 利用比较强排序 resultList.sort(myComparator); // 遍历 resultList 获取输出结果 (使用迭代器遍历) String resultStr = ""; Iterator&lt;CharCount&gt; iterator = resultList.iterator(); while (iterator.hasNext()){ CharCount next = iterator.next(); resultStr += next.getC() + " " + next.getCount() + " "; } // 去除结果最后面的空格 resultStr = resultStr.substring(0,resultStr.length() - 1); return resultStr; } // 自建一个比较器,比较 CharCount , 根据 CharCount 的 count 成员升序 class MyComparator implements Comparator&lt;CharCount&gt;{ @Override public int compare(CharCount o1, CharCount o2) { return o1.getCount() - o2.getCount(); } } // 自建一个内部类,存放字符和数量 class CharCount{ char c; int count; public CharCount(char c, int count) { this.c = c; this.count = count; } public char getC() { return c; } public void setC(char c) { this.c = c; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } } }
Z_Z_Z_Z_G 2021-10-22
  • 打赏
  • 举报
回复

我感觉 第一题输出ascll码 输出字母最大的 再输出数字最大的 希望对你有个新的思路

4,022

社区成员

发帖
与我相关
我的任务
社区描述
为初学Java的大学生提供一个学习、交流的社区。 社区包括:技术文章、学习任务、在线课程、在线编程练习。
javajava-eeeclipse 高校
社区管理员
  • zhrb
  • 驼同学.
  • 兰翔呀
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

社区板块说明:
1. Java技术:包含Java技术的各种新闻、文章。
2. 教学频道:包含Java基础技术与Java教学中常用的一些文章。建议初学者、在线学习的同学在这里交流、提问、浏览课程学习相关文章。
3. 学习任务:老师发布的教学任务。
4. 其他技术:其他技术文章。

社区链接说明:
1. 在线学习:本社区对应的在线课程(免费学习)。
2. 编程练习:本社区使用的在线编程练习平台(加入在线课程后,免费练习)。
3. 项目实例:一个简单的Java项目示例。
 

试试用AI创作助手写篇文章吧