/*
* 算法思想:
* 当K==1时候,只能循环移动,寻找最小;
* 当K>=2时候,将所有字母按照字典序排序即可,因为K>=2,可将前面K个元素任意换位置,换位置后,将第一个移动到最后,前面K个又可以换位置,因此推导出所有的元素都可以任意换位置。
*/
int cmp(const void *a ,const void *b){
return (*(char *)a) - (*(char *)b);
}
char * orderlyQueue(char * S, int K){
int len = strlen(S);
if(K>=2) {
qsort(S, len, 1, cmp);
return S;
}
char *s1 = (char *)malloc(sizeof(char) * (len+1));
int i=0, j;
char c;
memcpy(s1, S, len);
s1[len] = 0;
while(i<len){
c = s1[0];
for(j=0; j<len-1; j++){
s1[j] = s1[j+1];
}
s1[len-1] = c;
if(memcmp(s1, S, len) < 0){
memcpy(S, s1, len);
}
i++;
}
free(s1);
return S;
}
leetcode-899. 有序队列-C语言
最新推荐文章于 2022-08-04 15:05:28 发布