我正在开发一个可以从一个字符数组中删除重复项的函数。问题是该函数适用于一定数量的字符,但如果数组有很多术语,那么程序就无法正常工作。此外,如果重复的术语彼此相邻,则程序不会将其删除。
void delete_repeats(char array[],int size){
for(int i = 0; i < size; i++){
for(int j = i + 1; j < size; j++){
if(array[i] == array[j] || !((array[j] >= 97) && (array[j] <= 122))){
for(int k = j; k < size; k++){
array[k] = array[k + 1];
size--;
}
}
}
}
}
示例:
原始数组包含:Mary had a little lamp
程序运行后:maryhdliitttlelaampp
答案 0 :(得分:0)
您经常减少size
。移动数组内容后减少size
。
答案 1 :(得分:0)
将该循环的大小移出外循环:
void delete_repeats(char array[],int size){
for(int i = 0; i < size; i++){
for(int j = i + 1; j < size; j++){
if(array[i] == array[j] || !((array[j] >= 97) && (array[j] <= 122))){
for(int k = j; k < size; k++){
array[k] = array[k + 1];
}
size--;
}
}
}
}
INPUT: Mary had a little lamb
OUTPUT: Maryhdlitemb
void delete_repeats(char array[],int size){
for(int i = 0; i < size; i++){
for(int j = i + 1; j < size; j++){
if(array[i] == array[j] || !((array[j] >= 97) && (array[j] <= 122))){
for(int k = j; k < size; k++){
array[k] = array[k + 1];
}
size--;
}
}
}
}
INPUT: Mary had a little lamb
OUTPUT: Maryhdlitemb