比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是大写字母:
给出 A = "ABCD" B = "AABC", 返回 false
给出 A = "ABCD" B = "ACD",返回 true
我的代码:
/** * 由于是在字符串strA中确定是否包含字符串strB中的所有字符<br/> * 故只需要将字符串strB中的每一个字符在字符串strA中遍历,当在字符串strA中不存在时,则直接返回false<br/> * 当存在是,则进行字符串strB的下一个字符查找<br/> * @param strA * @param strB * @return */ public boolean compareStrings(String strA, String strB) { int aLen = strA.length(); int[] arr = new int[aLen]; for (int i = 0; i < aLen; i++) { arr[i] = 0; } boolean flag = true; for (int i = 0, bLen = strB.length(); i < bLen; i++) { flag = false; for(int j = 0;(j < aLen) && (!flag);j ++){ if (strB.charAt(i) == strA.charAt(j) && arr[j] == 0) { arr[j] = 1; flag = true; } } if (!flag) { break; } } return flag; }还有种比较牛的
思路:统计两边的信息进行比较。如果B中的每种字符的个数小于等于A中的,则A包含B。
参考资料:http://www.jianshu.com/p/f7f9987f1bbb
int Achar[26];//储存字符串的每个字母个数 int Bchar[26]; for (int i = 0; i<26; i++) { Achar[i] = 0; Bchar[i] = 0; } int Adate,Bdate;//记录AB的字符统计数据 int countA = A.length(); int countB = B.length(); for (int i = 0; i<countA; i++) { int index; index = A[i] - 65; Achar[index]++; } for (int i = 0; i<countB; i++) { int index; index = B[i] - 65;//65为大写A的ASCⅡ码值 Bchar[index]++; } for (int i = 0; i<26; i++) { if (Achar[i]<Bchar[i]) return false; } return true; }