比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母
样例
给出 A = “ABCD” B = “ACD”,返回 true
给出 A = “ABCD” B = “AABC”, 返回 false
法一
1 |
|
法二
定义一个大小为26的数组(因为大写字母有26个),遍历字符串A,将字符串A中出现的字符记录到数组中,出现一次加1;遍历字符串B,将出现的字符记录到数组中,出现一次减1。如果字符串B中的字符位置的数组大小小于0则字符串B不包含于字符串A。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public class Solution {
/**
* @param A: A string
* @param B: A string
* @return: if string A contains all of the characters in B return true else return false
*/
public static boolean compareStrings(String A, String B) {
// write your code here
int [] index=new int[26];
for(int i=0;i<A.length();i++)
index[A.charAt(i)-'A']++;
for(int i=0;i<B.length();i++)
{index[B.charAt(i)-'A']--;
if(index[B.charAt(i)-'A']<0) return false;}
return true;
}
}
实质上利用的是哈希表的思想。只有大写字母,一共26个,遍历A的时候,往里面压,遍历B的时候,往外边弹,如果不够弹,则不包含
hashmap实现
1 | import java.util.*; |
参考博客
关于hashmap https://www.cnblogs.com/lchzls/p/6714474.html
其他思路
https://blog.csdn.net/u012664191/article/details/76060513
https://blog.csdn.net/ivanmerlin/article/details/48315349