题目描述:有一个字符串s,有一个目标字符串t,尝试用s中的字符组成t,不可以重复使用,问最多可以组成多少字符串t,如果拼凑不出返回0。
比如输入{dogabcd,dog},输出1
Java笔试题,希望给个思路
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- CSDN专家-天际的海浪 2022-03-29 02:32关注
思路是分别用两个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; } }
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 matlab不知道怎么改,求解答!!
- ¥15 永磁直线电机的电流环pi调不出来
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效
- ¥15 悬赏!微信开发者工具报错,求帮改
- ¥20 wireshark抓不到vlan
- ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
- ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持