确定两个字符串通过重新排序是否可以相同的算法
2016-04-03 22:20
471 查看
首先要确定字母是否区分大小写,是否要考虑空白字符?
算法一:
此算法主要使用了JDK已有排序功能来实现的,考虑了空白字符,也区分了大小写。
算法二:
利用散列表的思想,使用字符的编码值当做下标来寻数组,将每个字符出现的次数记录下来,两个串进行比对。
算法一:
此算法主要使用了JDK已有排序功能来实现的,考虑了空白字符,也区分了大小写。
/** * 判断两个字符串是否可以通过重新排序相等 * @author Administrator */ public class CheckStringIsEquals { public static void main(String[] args) { String s = "asdasdasdjjhhjkwerFF "; String t = "asdasdasdjjhhjkwerfF "; System.out.println(permutation(s,t)); } public static String sort(String s){ char[] content = s.toCharArray(); java.util.Arrays.sort(content); return new String(content); } public static boolean permutation(String s,String t){ if(s.length() != t.length()){ return false; } return sort(s).equals(sort(t)); } }
算法二:
利用散列表的思想,使用字符的编码值当做下标来寻数组,将每个字符出现的次数记录下来,两个串进行比对。
/** * 判断两个字符串是否可以通过重新排序相等 * @author Administrator */ public class CheckStringIsEquals { public static void main(String[] args) { String s = "aa"; String t = "a"; System.out.println(permutation2(s,t)); } public static boolean permutation2(String s,String t){ //首先判断是否长度相等 if(s.length() != t.length()){ return false; } //假设只有256种字符 int[] letters = new int[256]; char[] s_array = s.toCharArray(); //计算字符串s中每个字符出现的次数 for(char c : s_array){ letters[c]++; } for(int i = 0;i<t.length();i++){ int c = (int)t.charAt(i); if(--letters[c]<0){ return false; } } return true; } }
相关文章推荐
- Linux内核设计第六周 ——进程的描述和创建
- cf19B. Checkout Assistant 【01 背包】
- 安卓打开File Explorer里面不显示内容
- socket server 长连接服务端
- 安卓打开File Explorer里面不显示内容
- lintcode:Unique Binary Search Trees II
- Android设计模式应用--状态模式
- android的消息机制
- Android中的Spinner控件)
- cpu_bitmap结构体解析
- Unity3d-Shader-UV移动
- 配置tomcat的compressableMimeType指定gzip的类型
- gdb调试带参数程序
- 【jdk1.8】PriorityQueue源码分析
- 蛇形数组实现
- Activiti 删除流程定义
- CornerStone
- no jlink device found
- AngularJs Controllers
- JavaScript的function和function()的区别