比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是大写字母
样例
给出 A = "ABCD"
B = "ACD"
,返回 true
给出 A = "ABCD"
B = "AABC"
, 返回 false
注意
在 A 中出现的 B 字符串里的字符不需要连续或者有序。
解题思路:
首先将字符串A,B转换为字符数组,并对字符数组进行排序,得到有序的字符数组。然后利用两根指针查找A,B字符数组中相同的字符,并记录相同字符的长度length。如何得到的长度length与字符串B的长度相同,那么A中包含B中所有的字符,否则A中不包含B中所有的字符。
public class Solution {
/**
* @param A : A string includes Upper Case letters
* @param B : A string includes Upper Case letter
* @return : if string A contains all of the characters in B return true else return false
*/
public boolean compareStrings(String A, String B) {
// write your code here
char[] ch1 = A.toCharArray();
char[] ch2 = B.toCharArray();
int i=0;
int j=0;
int flag =0;
Arrays.sort(ch1);
Arrays.sort(ch2);
if(B == null || B.length() <= 0)
return true;
else{
while(i < ch1.length&&j<ch2.length){
if(ch1[i] == ch2[j]) {
i++;
j++;
flag++;
}
else
if(ch1[i] >ch2[j]){
j++;
}
else{
i++;
}
}
if(flag == ch2.length)
return true;
else
return false;
}
}
}