Home 成长之路 Leetcode题解 数组之下标变换

数组之下标变换

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串”abcdefg”和数字2,该函数将返回左旋转两位得到的结果”cdefgab”。
示例 1:
输入: s = “abcdefg”, k = 2
输出: “cdefgab”
示例 2:
输入: s = “lrloseumgh”, k = 6
输出: “umghlrlose”
解题思路:数组元素的下标变换;利用传递的n作为作为划分点;将其划分为两部分,前后同时进行存入;在同时满足条件时才跳出;达到一次循环结束,最大的循环次数为俩部分中的长度最大值;
//双指针;
char* reverseLeftWords(char* s, int n){
char *arry;
int sum ,m1,m ,i=0 ,j;
    sum=strlen(s);//strlen求其长度;
    j=sum-1;//下标;
arry=malloc(sizeof(int)*(sum+1));
    arry[sum]=’\0′;//字符串数组最后是’\0′
m=n-1;  //向前的指针;
m1=n;  //向后的指针;
while(m1<sum || 0<=m ){
if(0<=m){
arry[j]=s[m];
j–;
m–;
}
if(m1<sum){
arry[i]=s[m1];
i++;
m1++;
}
}
return arry;
}

SIMILAR ARTICLES

0 188

0 185

发表评论

发表评论