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

刷题专练之翻转题练习

文章目录

  • 一、 编写函数实现字符串翻转
  • 二、轮转数组
  • 总结


在这里插入图片描述

一、 编写函数实现字符串翻转

描述
编写一个函数,实现字符串的翻转
输入描述:
输入一个字符串
输出描述:
输出翻转后的字符串
在这里插入图片描述
写法一:
这种方法是定义begin和end,同时交换begin和end的值,交换完后begin++,end–,直到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 len=numsSize;for(int i=0;i<len/2;i++)//对称交换{char temp=s[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(begin<=end){int temp=nums[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 i=0;i<numsSize-1;i++){printf("%d",nums[i]);}
}

总结

本篇文章篇幅较少,但只要将这两个题的思想掌握,翻转题基本就不会有什么问题了

http://www.lryc.cn/news/10054.html

相关文章:

  • 【Java】死锁
  • DS图—图的最短路径(无框架)迪杰斯特拉算法
  • 【笔记】数据异常检测与修复总结
  • 算法笔记(七)—— 图的相关知识及算法
  • ssh配置互信时错误解决方法
  • SQL69 返回产品并且按照价格排序
  • vue+elementUI 实现设置还款日字母弹窗组件
  • 【JavaGuide面试总结】Redis篇·中
  • Python:每日一题之全球变暖(BFS连通性判断)
  • VUE -- defineExpose
  • 实用调试技巧【下篇】
  • 【数据结构期末例题】
  • 管理物理和快照备数据库(Physical and Snapshot Standby Databases)
  • 双目立体视觉:SAD算法
  • 海外问卷调查答题技巧,纯干货分享,新手小白看过来
  • 【NGINX入门指北】Nginx Web 架构实验
  • rtt-nano移植
  • cnn+transformer
  • Python fileinput模块:逐行读取多个文件
  • Vue3路由传参
  • 用户管理——认证功能JWT和Session
  • hashlib — 加密哈希算法
  • 四喜临门选股预警源码指标
  • Kotlin新手教程五(扩展)
  • QT入门Containers之Widget、Frame
  • 数据结构与算法基础-学习-12-线性表之顺序队
  • Python 字典(Dictionary)小窍门
  • 知识图谱构建技术综述
  • 环境变量和进程地址空间
  • 【数据结构】栈和队列