确定两串乱序同构 牛客网 程序员面试金典 C++ Python
确定两串乱序同构 牛客网 程序员面试金典 C++ Python
-
题目描述
-
给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串中的空格。
-
给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。
-
测试样例:
-
"This is nowcoder","is This nowcoder"
-
返回:true
-
"Here you are","Are you here"
-
返回:false
C++
class Same {
public:
//run:8ms memory:484k
bool checkSam(string stringA, string stringB){
if("" == stringA && "" == stringB) return true;
int sizeA = stringA.size();
int sizeB = stringB.size();
if(sizeA != sizeB) return false;
int A[256] = {0};
for(int i =0;i<sizeA;i++){
A[stringA[i]]++;
A[stringB[i]]--;
}
for(int i = 0; i<256;i++)
if(A[i] != 0) return false;
return true;
}
};
Python
class Same:
def checkSam(self, stringA, stringB):
if("" == stringA and "" == stringB): return True
sizeA = len(stringA)
sizeB = len(stringB)
if(sizeA != sizeB): return False
lt=[0] * 256
for i in range(0,sizeA):
lt[ord(stringA[i])] +=1
lt[ord(stringB[i])] -=1
for i in range(0,256):
if lt[i] != 0: return False
return True