a="csdnnet"; b="descntn" ---> return true
a="hello"; b="oelhg" --->return false
Java 如何更好地判断一个字符串是一个字符串打乱顺序后的字符串
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答
关注 算法思想:首先两个字符串长度必须相等;其次,目标串中的各个字符必须都包含在原串中;
第三,目标串种各个字符的个数必须跟原串中对应字符的个数一样。
实例代码:import java.util.HashMap; import java.util.Map; public class StringOrderUtil { public static boolean isScrambledString(String source,String target){ if(source==null||target==null){ throw new IllegalArgumentException("source or target is null."); } if(source.length()!=target.length()){ System.out.println("target string's length is not equal to source length."); return false; } //目标串中每个字符都包含在原串中 int length = source.length(); Map<Character,Integer> targetCount = new HashMap<Character,Integer>(); for(int i =0;i<length;i++){ char c = target.charAt(i); //target中某个字符不在原串中,返回false int indexOfSource = source.indexOf(c); if(indexOfSource==-1){ return false; } //统计该串在本串中的个数 if(targetCount.get(c)==null){ targetCount.put(c, 1); }else{ Integer count = targetCount.get(c); targetCount.put(c, 1+count); } } //统计原串中各个字符的个数 Map<Character,Integer> sourceCount = new HashMap<Character,Integer>(); for(int i =0;i<length;i++){ char c = source.charAt(i); if(sourceCount.get(c)==null){ sourceCount.put(c, 1); }else{ Integer count = sourceCount.get(c); sourceCount.put(c, 1+count); } } //目标串中每个字符个数跟原串中对应字符的个数一样 for(Map.Entry<Character, Integer> entry:targetCount.entrySet()){ Character key = entry.getKey(); if(entry.getValue()!=sourceCount.get(key)){ return false; } } //目标串中的每个元素都在原串中,且对应个数相同 return true; } public static void main(String[] args) { String a = "csdnnet"; String b = "descntn"; boolean result = isScrambledString(a,b); System.out.println(result); //个数不同 b = "descnnn"; result = isScrambledString(a,b); System.out.println(result); } }
测试通过,OK。
解决 无用评论 打赏 举报
悬赏问题
- ¥40 复杂的限制性的商函数处理
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码