我在比较两个字符数组时遇到了麻烦。我们被要求制作一个程序,使用2个数组来获得通用和组合字符。组合功能将组合数组中的所有输入,如果有共同的字母,该功能将只显示一次字母。 例如:
q w e r r
e r t y u
Output: q w e r t y u
虽然常用功能只显示常用字符 例如:
q w e r r
e r t y u
Output: e r
我需要循环语句和动态分配,特别是malloc。如果不需要使用布尔数据类型,则请不要使用。否则使用。
这两个函数的原型是:
char*comb(char*,char*) //For combine method
char*comm(char*,char*) //For common method
答案 0 :(得分:0)
假设第一个数组是Array1
,第二个数组是Array2
。
为了创建Combine函数,您应该创建一个名为Array3
的第三个数组。
public void Combine()
{
bool exist = false;
for (int i=0; i<Array1.lengh; i++)
{
for (int j=0; j<Array3.lengh; j++)
{
if (Array[i] != Array[j])
exist = false;
else {
exist = true;
break;
}
}
if (!exist)
{
Array3.add(Array1[i]);
// output Array1[i] depends on the program you're using
}
}
}
查看逻辑应该如何,并尝试创建Common
函数。
答案 1 :(得分:0)
这是combine函数,您可以将char数组作为字符串参数传递给函数,如下所示
combine("qwerr", "ertyu"); // returns "qwertyu"
function combine() {
var jString, jArr, cArr;
jString = "";
cArr = [];
for (var i = 0, ii = arguments.length; i < ii; i++) {
jString += arguments[i];
}
jArr = jString.split("");
cArr.push(jArr[0]);
for (var j = 0, jj = jArr.length; j < jj; j++) {
if (test(j)) {
cArr.push(jArr[j]);
}
}
function test(j) {
var x = true;
for (var k = 0, kk = cArr.length; k < kk; k++) {
if (cArr[k] == jArr[j]) {
x = false;
break;
}
}
return x;
}
return cArr.join("");
}
可以使用相同的概念创建公共数组的函数。