题目:给定一字符串strOriginal(全英文小写字母组成),
并任意给一字符串strDesc,
编写函数实现:
判断strDesc是否为strOriginal的任意排序,
注意重复。
比如:给定字符串为adcbae,那么dacbea、cabeda都是匹配的,但是dacbe、cabedg不匹配
java代码实现如下:
package others;
import java.util.Arrays;
import java.util.Scanner; /**
* * 用散列方式实现 *
*/ public class TestStr {
private static boolean testStr(String strOriginal, String strDesc) { int[] hashOriginal = new int[26]; int[] hashDesc = new int[26]; if (strOriginal.length() != strDesc.length()) {
return false; } for (int index = 0; index < strOriginal.length(); ++index) {
int indexOriginal, indexDesc; indexOriginal = strOriginal.charAt(index) - 'a'; hashOriginal[indexOriginal] += 1; indexDesc = strDesc.charAt(index) - 'a'; hashDesc[indexDesc] += 1; } return Arrays.equals(hashOriginal, hashDesc);
} public static void main(String[] args) {
System.out.print("请输入源字符串:"); Scanner in = new Scanner(System.in); String str1 = (String) in.nextLine(); System.out.println(); System.out.print("请输入目标字符串:"); Scanner in1 = new Scanner(System.in); String str2 = (String) in1.nextLine(); System.out.println(); System.out.println("源字符串为:" + str1); System.out.println("目标字符串为:" + str2); if (testStr(str1, str2)) { System.out.println("匹配成功!"); } else { System.out.println("匹配失败!"); } } } |
|