下面的代码是做什么的?用Python/Java/C#/C++中之一语言重新实现它。注意程序效率和代码风格。
1: def Boolean no_name(a : String, b : String)
2: if a.length != b.length
3: return false
4:
5: for(x : Integer = 0; x < b.length; x++)
6: if a[0] == b[x]
7: return no_name(utilityFunction(a, 0), utilityFunction(b, x))
8: end
9: end
10:
11: return b.length == 0
12: end
13:
14: def String utilityFunction(s : String, j : Integer)
15: ret = new char[s.length - 1]
16: int d = 0
17: for (k : Integer = 0; k < s.length; k++)
18: if (k == j)
19: d = 1
20: else
21: ret[k - d] = s[k]
22: end
23: end
24: return new String(ret)
25: end
为你在上一题中实现的代码编写单元测试。
你这UtilityFuction是什么gui 这是一个迭代 没这个函数的说明 无法解释作用
就是验证a字符串和b字符串有相同的元素,顺序可以不一致;
如:a和b里含有相同字符a,b,c,d,e,f,g;
string a="abcdefg"; string b="defgabc" 则函数返回的true;
同一个字符也可以有多个;
下面是C++代码:
#include
#include
using namespace std;
string unFun(string s, int j) {
char* ret = new char[s.length() - 1];
int d=0;
for(int k=0; k<s.length(); k++) {
if(k == j){
d=1;
} else {
ret[k-d] = s[k];
}
}
ret[s.length() - 1] = '\0';
string ret_string(ret);
return ret_string;
}
bool no_name(string a, string b) {
if(a.length() != b.length()) {
return false;
}
for(int x=0; x<b.length(); x++){
if(a[0] == b[x]) {
return no_name(unFun(a, 0), unFun(b, x));
}
}
return b.length() == 0;
}