杭州市建设监理协会网站,有赞微商城官网,企业查询宝官网,打广告推广怎么做文章目录一、 编写函数实现字符串翻转二、轮转数组总结一、 编写函数实现字符串翻转
描述 编写一个函数#xff0c;实现字符串的翻转 输入描述#xff1a; 输入一个字符串 输出描述#xff1a; 输出翻转后的字符串 写法一#xff1a; 这种方法是定义begin和end#xff0…
文章目录一、 编写函数实现字符串翻转二、轮转数组总结一、 编写函数实现字符串翻转
描述 编写一个函数实现字符串的翻转 输入描述 输入一个字符串 输出描述 输出翻转后的字符串 写法一 这种方法是定义begin和end同时交换begin和end的值交换完后beginend–直到begin end为止就结束了
void Rote(int*nums,int numsSize )
{int begin 0;int end numsSize - 1;while (begin end){int temp nums[begin];nums[begin] nums[end];nums[end--] temp;}
}写法二 此方法思想与上面类似就是写法不同
void reverse_string(int*nums,int numsSize)
{int lennumsSize;for(int i0;ilen/2;i)//对称交换{char temps[len-1-i];s[len-1-i]s[i];s[i]temp;}
}写法三 上面两种方法是原地旋转这种方法是异地转就是建立一个数组直接将数组从后面的数据直接放到另外的一个数组里面然后直接复制过来这种方法较为简单代码我就不写了
二、轮转数组
189. 轮转数组 其实如果你将上面的题吃通透后这题你就基本会了只是需要想到一个特殊的思想 1.反转整个字符串 2.反转区间为前k的子串 3.反转区间为k到末尾的子串 然后就可以了 然后运用上面第一题的方法这题就很好做了 这里我只写第一种写法的方法
void fun(int *nums,int begin,int end)
{while(beginend){int tempnums[begin];nums[begin]nums[end];nums[end--]temp;}
}
void rotate(int* nums, int numsSize, int k){k%numsSize;fun(nums,0,numsSize-k-1);fun(nums,numsSize-k,numsSize-1);fun(nums,0,numsSize-1);for(int i0;inumsSize-1;i){printf(%d,nums[i]);}
}总结
本篇文章篇幅较少但只要将这两个题的思想掌握翻转题基本就不会有什么问题了