1. 程式人生 > 實用技巧 >leetcode刷題——40組合總和2

leetcode刷題——40組合總和2

用指標陣列處理上一題目,字串不等長

解題思路: 與數字的比較沒什麼區別,只不過需要採用strcmp進行字串的大小比較,使用指標實現需要在最早接收資料的時候就採用字串指標陣列,這樣的好處在於指標的指向可以直接通過賦值進行改變,而指標陣列中的字串的順序只需要交換不同字串的地址就可以實現

答案:

#include<stdio.h>
#include<string.h>
void sort(char *s[10])
{
	int i, j;
	for (i = 0; i < 10; i++){
		for (j = i; j < 10; j++){
			if (strcmp(s[i], s[j])> 0){
				char *tmp = s[i]; //指標的好處在於直接通過賦值可以改變指向
				s[i] = s[j];  //只要交換了字串的地址就實現了字串的交換
				s[j] = tmp;//因此通過指標指向的交換就能夠實現陣列中字串的排序
			}
		}
	}
}
int main()
{
	char *str[10];
	printf("Please enter ten strings:\n");
	for (int i = 0; i < 10; i++) {
		str[i] = malloc(32);//為每一個指標分配空間
		scanf_s("%s", str[i], 32);
	}
	sort(str);
	printf("\n");
	for (int i = 0; i < 10; i++){
		printf("%s\n", str[i]);
        free(str[i]);
	}
	system("pause");
	return 0;
}