其他分享
首页 > 其他分享> > 判断两个字符串是否互为变形词

判断两个字符串是否互为变形词

作者:互联网

 1 package code;
 2 
 3 import java.util.Scanner;
 4 
 5 /*20190730判断两个字符串是否互为变形词
 6  * 输入:A B 两个字符串
 7  * 输出:true 或者 false
 8  * 思路:使用遍历法,先统计A中各元素的数量,将出现的字符和字符的次数
 9  * 保存在map[0:255],   然后再遍历B,如果遍历到了 某个字符,
10  * 则使该元素出现的次数减1,如果减少之后的值为负,则返回false
11  * 遍历完了没出现负数,则返回true
12  * 
13  * 定义域:A与B长度不相等,或者其中一个数组为空
14  * 
15  * */
16 public class Problem_01_IsDeformation {
17 
18     public static boolean isDeformation(String str1, String str2) {
19         if (str1 == null || str2 == null || str1.length() != str2.length())
20         {
21             return false;
22         }
23         char[] chars1 = str1.toCharArray();
24         char[] chars2 = str2.toCharArray();
25         int[] map = new int [256];            //申请一个长度为256的空数组
26         for (int i = 0; i<chars1.length; i++) {
27             map[chars1[i]]++;            //map[]中,第i个元素的值的出现次数+1
28         }
29         for (int i = 0; i<chars2.length; i++) {
30             if (map[chars2[i]]-- == 0) {
31                 return false;
32             }
33         }
34         return true ;
35     }
36     
37     public static void main(String[] args) {
38         // TODO Auto-generated method stub
39 //        Scanner sc1 = new Scanner(System.in);
40 //        Scanner sc2 = new Scanner(System.in);
41 //        while(sc1.hasNext()) {
42 //            String str1 = sc1.next();
43 //            System.out.println("输入的第一个字符串" + str1);
44 //        }
45 //        while(sc2.hasNext()) {
46 //            String str2 = sc2.next();
47 //            System.out.println("输入的第二个字符串" + str2);
48 //            }
49         String A = "abcabcabc";
50         String B = "bcacbaacb";
51         System.out.println(isDeformation(A, B));
52         
53     }
54 
55 }

 

标签:遍历,false,变形,str2,str1,互为,int,字符串
来源: https://www.cnblogs.com/nihenin/p/11271044.html