当前位置: 首页 > news >正文

胶州网站建设 网络推广福州网站建设工作室

胶州网站建设 网络推广,福州网站建设工作室,如何用wordpress快速建站,西瓜编程网站怎么做#x1f388;个人主页:#x1f388; :✨✨✨初阶牛✨✨✨ #x1f43b;推荐专栏: #x1f354;#x1f35f;#x1f32f; c语言初阶 #x1f511;个人信条: #x1f335;知行合一 #x1f349;本篇简介::介绍字符串旋转,左旋,右旋即旋转结果. 金句分享: ✨好好干个人主页: :✨✨✨初阶牛✨✨✨ 推荐专栏: c语言初阶 个人信条: 知行合一 本篇简介::介绍字符串旋转,左旋,右旋即旋转结果. 金句分享: ✨好好干日子会越来越甜。✨ 目录一、轮转数组方法一:暴力解题:方法二:三步翻转法.二.左旋转字符串三:字符串旋转结果思路一:思路2:一、轮转数组 题目链接:(来源于力扣)(右旋) 给定一个整数数组 nums将数组中的元素向右轮转 k 个位置其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4] 方法一:暴力解题: 一位一位的移动,用循环完成移动一位的操作,一次交换相邻两个数. 例如:右移一位 数据:1 2 3 4 5 6 7 图解: 右移一位过程图://右移一位操作for (i numsSize - 1; i 0; i--){int tmp nums[i];nums[i] nums[i - 1];nums[i - 1] tmp;}右移k位(外层加一个k次循环) 注意:如果移动的位数是数字个数的整数倍数,则相当于没有移动,用k%numsSize可以避免没有必要的多余循环. void rotate(int* nums, int numsSize, int k)//外层循环 {int i 0;k k % numsSize;while (k--){for (i numsSize - 1; i 0; i--)//内部循环{//交换int tmp nums[i];nums[i] nums[i - 1];nums[i - 1] tmp;}} }小改进: 将内部的每次循环都要创建变量进行交换,改成直接覆盖,将最后一位数字拷贝一份后,将前面的数据直接向后面覆盖,最后将首位数据赋值为拷贝的最后一位数值也可以完成操作. 图解: 代码: void rotate(int* nums, int numsSize, int k) {int i 0;k k % numsSize;while (k--){int tmp nums[numsSize - 1];//最后一位数字拷贝一份for (i numsSize - 1; i 0; i--)//内部循环{nums[i] nums[i - 1];//前面的数据直接向后面覆盖}nums[0] tmp;//首位数据赋值为拷贝的最后一位数}}但是,暴力解决,在面对大量的数据时,运行速度会慢很多, 方法二:三步翻转法. 其实有一个很神奇的现象,当我们需要右轮转 k 个位置时,可以将这个整形数组看作两部分 前半部分是:前n-k个数据,下标为[0,numsSize - k-1] 后半部分是:最后的k个数据,下标为:[numsSize - k,numsSize - 1] 然后分别逆序两部分,最后整体逆序就行了. 例如:数据1 2 3 4 5 6 7 逆序前半部分:4 3 2 1 5 6 7 逆序后半部分:4 3 2 1 7 6 5 逆序全部: 7 6 5 1 2 3 4 void reverse(int *arr,int left,int right) {while(leftright){int tmp arr[left];arr[left] arr[right];arr[right] tmp;left;right--;} } void rotate(int* nums, int numsSize, int k){if(numsSize0){return nums;}k k % numsSize;reverse(nums, 0, numsSize - k-1);//逆序前半部分reverse(nums, numsSize - k, numsSize - 1);//逆序后半部分reverse(nums, 0, numsSize - 1);//逆序整体 } 二.左旋转字符串 传送门: 题目描述: 一个给定的字符序列 S 请你把其循环左移 K 位后的序列输出 示例1: 输入 “abcXYZdef”,3 返回值 “XYZdefabc” 学完上面的数组右旋,相信左旋字符串应该可以照猫画虎吧! 同理使用:三步翻转法 #include string.h void reverse(char *arr,int left,int right) {while(leftright){char tmp arr[left];arr[left] arr[right];arr[right] tmp;left;right--;} } char* LeftRotateString(char* nums, int k ) {int szstrlen(nums);if(sz0){return nums;}k k % sz;reverse(nums, 0, k-1);reverse(nums, k, sz - 1);reverse(nums, 0, sz - 1);return nums; }三:字符串旋转结果 题目描述: 自定义一个函数,要求判断一个字符串是否为另外一个字符串旋转之后的字符串。 要求这两个字符串长度相等. 返回值: 是: 返回1 不是:返回0. 示例1: 给定字符串s1 AABCD和字符串s2 BCDAA s1左旋2个数后可以得到s2,所以结果为真,返回1; 示例2: 给定s1abcd和s2ACBD s1无法通过旋转得到,s2.结果为假,返回0; 思路一: 通过计算字符串长度得到sz,然后循环旋转sz次,每次旋转后与s2进行比较. #include stdio.h #include string.h #include assert.h void reversed(char* left,char* right) {assert(left);//防止传入空指针assert(right);while (left right){char tmp *left;*left *right;*right tmp;left;right--;} } void left_revolve(char*arr,int k) {int sz strlen(arr);k % sz;//逆序前k个reversed(arr, arrk-1);//逆序后面剩下的reversed(arrk, arrsz-1);//逆序整体reversed(arr, arr sz - 1); } int is_revolve(char* s1, char* s2, int sz) {int i 0;for (i 0; i sz; i){left_revolve(s1, 1);if (strcmp(s1, s2) 0){ return 1;}}return 0; } int main() {char s1[50] { 0 };char s2[50] { 0 };gets(s1);gets(s2);int sz strlen(s1);int ret is_revolve(s1, s2, sz);printf(%d, ret);return 0; }思路2: 创建一个临时字符数组(tmp),将s1字符串拷贝两份存入临时字符数组. 使用strstr函数,判断字符串s2是否为tmp的字串. 涉及库函数: strcmp函数:字符串拷贝函数 strcat函数:字符串追加函数 strstr函数:查找子字符串函数. 这些字符串操作函数会在后续更新其使用方法,参数,以及模拟实现. #include stdio.h #include string.h #include assert.h #define Max 100//定义零时字符串的最大长度 int is_revolve(const char* s1, char* s2,int sz) {assert(s1 s2);char tmp[Max];strcpy(tmp, s1);//将字符串1拷贝一份放入零时数组中strcat(tmp, s1);//使用字符串连接函数,将两个s1连接在一起if (strstr(tmp, s2) ! NULL)//如果strstr函数返回的地址不是NULL说明,含有子字符串.{return 1;}else 0;//否则没有子字符串.} int main() {char s1[50] { 0 };//创建字符串s1char s2[50] { 0 };//创建字符串s2;gets(s1);//获取字符串1gets(s2);//获取字符串2int sz strlen(s1);//计算字符串长度int ret is_revolve(s1, s2, sz);printf(%d, ret);return 0; }
http://www.dnsts.com.cn/news/17611.html

相关文章:

  • 西安做网站收费价格免费手机网页
  • php 网站开发工程师手机网站商城源码
  • 公司介绍网站怎么做的免费企业网站程序asp
  • 网站添加在线支付功能制作哪个网站好
  • 工信部网站备案登陆仿站工具哪个好最好
  • 石桥铺网站建设网站开发 教学目标
  • 怎么做后台网站一键更新一级消防工程师考试报名
  • 顺德网站建设服务平台技术支持:淄博网站建设
  • 网站建设包含哪些内容wordpress discuz 统一账号
  • 化妆品产品的自建网站哟哪些谷歌seo招聘
  • thinkphp可以做网站吗the 7 wordpress theme
  • ps做登录网站长沙seo公司排名
  • 东莞市品牌网站建设核心关键词是什么意思
  • 做房地产网站学校网站首页制作
  • 泸州公司做网站wordpress本地上传阿里元
  • 建设银行网站 个人客户端网站域名在哪里备案
  • 中国做网站最好的莱芜建设网站
  • 实用写作网站网站如何实现微信登录界面
  • ipv6网站开发网站效果图设计
  • 网站专题设计模板wordpress 抱歉您不能访问此页面
  • flask做视频网站松江做网站多少钱
  • 3d自学网站宁波网站建设的价格表
  • 什么网站可以找到做餐饮的会计seo营销论文
  • 您在工信部门备案网站获取的icp备案号百度指数免费添加
  • 如何降低网站相似度东光县建设局网站
  • 网站服务器租一个月小红书笔记关键词排名优化
  • 网上书城网站开发方案安徽省建设业协会网站
  • 合肥网站推广电话eclipse开发网站开发
  • 互联网站建设共享办公室 设计
  • 网站添加百度地图标注个人旅游网站模版