如何用C++实现如下代码

  1. 下面的代码是做什么的?用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

  2. 为你在上一题中实现的代码编写单元测试。

你这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;
}