夢醒 2022-03-29 00:06 采纳率: 50%
浏览 55
已结题

Java笔试题,希望给个思路

题目描述:有一个字符串s,有一个目标字符串t,尝试用s中的字符组成t,不可以重复使用,问最多可以组成多少字符串t,如果拼凑不出返回0。
比如输入{dogabcd,dog},输出1

  • 写回答

3条回答 默认 最新

  • 关注

    思路是分别用两个HashMap统计出字符串s和字符串t中每个字符的个数,
    遍历字符串t的HashMap中字符
    用字符串s的HashMap中相同字符的个数整除以字符串t的HashMap中每个字符的个数,返回整除结果中的最小值即可

    参考代码如下:

    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    
    class Test01 {
      public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入字符串s:");
        String s=sc.nextLine();
        System.out.println("请输入字符串t:");
        String t=sc.nextLine();
        System.out.println(res(s,t));
      }
      public static int res(String s,String t) {
        Map<Character,Integer> t_map =count(t);
        Map<Character,Integer> s_map =count(s);
        int n, min = 99999;
        for(Character c:t_map.keySet() ){//遍历t_map
          if(s_map.containsKey(c)){//查看字符是否在s中存在,如果存在
               n = s_map.get(c) / t_map.get(c);
               if (n<min)
                  min = n;
          } else
              return 0;
        }  
        return min;
      }
      public static Map<Character,Integer> count(String str){
        Map<Character,Integer> map=new HashMap<Character,Integer>();
        char[] array_char=str.toCharArray();//把字符串转成字符数组
        for(char arr_char: array_char){//遍历字符数组
          if(map.containsKey(arr_char)){//查看字符是否在map的key中存在,如果存在
            Integer old=map.get(arr_char);//通过key获取value的值
            map.put(arr_char,old+1);//把字符放入map的key中,value设置为通过key获取value的值+1
          }else{//查看字符是否在map的key中存在,如果不存,把字符放入map的key中,value默认设置为1
            map.put(arr_char,1);
          }
        }
        return map;
      }
    }
    

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月6日
  • 已采纳回答 3月29日
  • 创建了问题 3月29日

悬赏问题

  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持