给定两个字符串,确定其中一个字符串的字符重新排列后,能否变成另一个字符串

 1 /*
 2  * 给定两个字符串,确定其中一个字符串的字符重新排列后,能否变成另一个字符串,其实也就是变位词问题
 3  * 比如说  a='abc' b='acb'是可以通过a变成b的
 4  * 思路;
 5  * 1.应进行分析,变位词区分大小写吗?比如God和dog是变位词?还需要考虑空格问题?
 6  * 在这里我们假定是区分大小写的。
 7  * 2.比较两个字符串时,如果它们的长度都不相等了,那肯定不是变位词
 8  * 
 9  * 
10  * */
11 
12 public class IsSameString {
13 
14     public static void main(String[] args) {
15         // TODO Auto-generated method stub
16         String s="abcd";
17         String t="dcba";
18         IsSameString iss=new IsSameString();
19         boolean flag=iss.permutation(s, t);
20         if(flag)
21             System.out.println("变位词");
22         else
23         System.out.println("不是变位词");
24 
25     }
26     /*
27      * 如果两个是变位词的关系,那么它们都拥有相同的字符,只不过顺序不同,
28      * 对它们进行排序的话,会得到相同的字符串顺序
29      * 可以利用这一点进行判断
30      * 
31      * */
32     public String sort(String s)
33     {
34         char[] content = s.toCharArray();
35         java.util.Arrays.sort(content);
36         return new String(content);
37     }
38     public boolean permutation(String s,String t)
39     {
40         if(s.length()!=t.length())
41             return false;
42         return sort(s).equals(sort(t));
43     }
44     
45     
46 
47 }

 

posted on 2014-09-03 13:19  daocaorendeshijie  阅读(1623)  评论(0编辑  收藏  举报

导航