您的位置:首页 > 其它

LintCode 字符串比较

2015-06-27 21:36 363 查看

比较两个字符串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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: