腾讯笔试题之字符串匹配问题

  假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,
  比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同,

  所以这两个字符串是匹配的。要求高效!

private boolean match(String a, String b){

Map<Byte, Integer> map = new HashMap<Byte, Integer>();
byte[] ba = a.getBytes();
byte[] bb = b.getBytes();
if (ba.length != bb.length)
{
return false;
} else {
int l = ba.length;
for (int i=0; i<l; i++)
{
if (map.get(ba[i]) == null)
{
map.put(ba[i], 1);
} else {
map.put(ba[i], map.get(ba[i])+1);
}
}

for (int j=0; j<l; j++)
{
if (map.get(bb[j]) == null)
{
return false;
} else {
int numOfBbj = map.get(bb[j])-1;
if (numOfBbj == 0)
{
map.remove(bb[j]);
} else {
map.put(bb[j], numOfBbj);
}

}
}

if (map.size() == 0)
{
return true;
}
}

return false;
}

你可能感兴趣的:(String,腾讯,null,Integer,byte)