C练题笔记之:Leetcode-1427. 字符串的左右移
题目:
给定一个包含小写英文字母的字符串 s 以及一个矩阵 shift,其中 shift[i] = [direction, amount]:
direction 可以为 0 (表示左移)或 1 (表示右移)。
amount 表示 s 左右移的位数。
左移 1 位表示移除 s 的第一个字符,并将该字符插入到 s 的结尾。
类似地,右移 1 位表示移除 s 的最后一个字符,并将该字符插入到 s 的开头。
对这个字符串进行所有操作后,返回最终结果。
示例 1:
输入:s = "abc", shift = [[0,1],[1,2]]
输出:"cab"
解释:
[0,1] 表示左移 1 位。 "abc" -> "bca"
[1,2] 表示右移 2 位。 "bca" -> "cab"
示例 2:
输入:s = "abcdefg", shift = [[1,1],[1,1],[0,2],[1,3]]
输出:"efgabcd"
解释:
[1,1] 表示右移 1 位。 "abcdefg" -> "gabcdef"
[1,1] 表示右移 1 位。 "gabcdef" -> "fgabcde"
[0,2] 表示左移 2 位。 "fgabcde" -> "abcdefg"
[1,3] 表示右移 3 位。 "abcdefg" -> "efgabcd"
提示:
1 <= s.length <= 100
s 只包含小写英文字母
1 <= shift.length <= 100
shift[i].length == 2
0 <= shift[i][0] <= 1
0 <= shift[i][1] <= 100
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/perform-string-shifts
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
结果:
解题思路:
1,计算出总共左移或者右移了多少,并且将饶了几圈的通过取余算出实际走了多少
2,通过区分左移和右移,按顺序赋值到新的数组中
代码:
char * stringShift(char * s, int** shift, int shiftSize, int* shiftColSize){int len = strlen(s);int temp = 0;for(int i = 0; i < shiftSize; i++){if(shift[i][0]) {temp -= shift[i][1];} else {temp += shift[i][1];}}if(temp < 0) {temp = -(abs(temp) % len);} else {temp = temp % len;}if(temp == 0) {return s;}char *retArr = (char *)malloc(sizeof(char) * (len + 1));memset(retArr, '\0', len+1);if(temp > 0) {for(int i = 0; i < len; i++) {if(i + temp >= len) {retArr[i] = s[i + temp - len];} else {retArr[i] = s[i + temp];}}} else {for(int i = 0; i < len; i++) {if(i + temp < 0) {retArr[i] = s[len + temp + i];} else {retArr[i] = s[i + temp];}}}return retArr;
}
C练题笔记之:Leetcode-1427. 字符串的左右移相关推荐
- LeetCode 1427. 字符串的左右移
文章目录 1. 题目 2. 解题 1. 题目 给定一个包含小写英文字母的字符串 s 以及一个矩阵 shift,其中 shift[i] = [direction, amount]: direction ...
- 【LeetCode】1427、字符串的左右移
[声明] 如果有侵权,请联系作者删除侵权部分. 如果有错误,请联系作者修改错误部分. 如果有转载,请标明出处. [难度] 简单 [题目] 给定一个包含小写英文字母的字符串 s 以及一个矩阵 shift ...
- 字符串循环左|右移实现(C|C++)
一.字符串循环右移K位 (1)图解思考 (2)代码实现 时间复杂度O(n) | 空间复杂度O(1) // 三次翻转实现 #include <iostream> #include <c ...
- C练题笔记之:牛客-HJ029.字符串加密
题目: 1.对输入的字符串进行加解密,并输出. 2.加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B:字母Z时则替换为a: 当内容是数字时则把该 ...
- C练题笔记之:Leetcode-第 85 场双周赛---6157. 二进制字符串重新安排顺序需要的时间
emm...第一次参加比赛..着实看到了差距之大 题目: 给你一个二进制字符串 s .在一秒之中,所有 子字符串 "01" 同时 被替换成 "10" .这个过程 ...
- C练题笔记之:Leetcode-1455. 检查单词是否为句中其他单词的前缀
题目: 给你一个字符串 sentence 作为句子并指定检索词为 searchWord ,其中句子由若干用 单个空格 分隔的单词组成.请你检查检索词 searchWord 是否为句子 sentence ...
- C练题笔记之:Leetcode-2055. 蜡烛之间的盘子
题目: 给你一个长桌子,桌子上盘子和蜡烛排成一列.给你一个下标从 0 开始的字符串 s ,它只包含字符 '*' 和 '|' ,其中 '*' 表示一个 盘子 ,'|' 表示一支 蜡烛 . 同时给你一个下 ...
- 刷题笔记之十一 (计算字符串的编辑距离+微信红包+年终奖+迷宫问题+星际密码+数根)
目录 1. 计算字符串的编辑距离 2. 微信红包 3. 双向链表修改,比如插入新的结点,一定要画图 4. 一颗完全二叉树第六层有9个叶结点(根为第一层),则结点个数最多有109 5. 将N条长度均为M ...
- C练题笔记之:Leetcode-12. 整数转罗马数字
题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 1 ...
- C练题笔记之:牛客-HJ033.整数与IP地址间的转换
题目: 描述 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成 一个长整数. 举例:一个ip地址为10.0.3.193 每段数字 ...
最新文章
- 用rufus f2 制作Ubuntu16.04 U盘启动盘
- 顺序队列相关操作(C语言实现)
- mysql计算某一天所在周或月的第一天和最后一天
- Balanced Team
- php yanzhengm,ThinkPHP 在使用M方法(不创建模型类)时实现自动验证与自动填充
- mysql改国标码_MySQL 优化实施方案
- 热像仪 二次开发 c++_重庆多功能红外线热像仪方案
- 强悍的命令 —— cp
- python自动化测试-python能够做软件的自动化测试吗?
- 操作系统 汤子瀛版 读书总结
- python爬取酷狗音乐歌词_python爬虫教程:爬取酷狗音乐
- 11(3)-AirSim+四旋翼仿真-AirSim中人工势场法方法改进
- 人工智能实验:猴子摘香蕉问题(Python代码实现)
- Ubuntu 16.04静态IP设置
- MATLAB实现空间前方交会-后方交会计算
- Yii Framework 开发教程(29) Zii组件-Menu 示例
- 不能用float、double 存储金额——BigDecimal详解
- 你绝对不能错过的7款开源硬件架构
- 无法解析大于号和小于号
- 在一个批处理系统中有两个作业进程,一个作业序列其到达时间及估计运行时间如下表作业 到达时间
热门文章
- php 开源系统(cms),30个很棒的PHP开源CMS内容管理系统
- 企鹅CMS开源影视系统
- 计算机驱动程序的安装过程,u盘驱动程序安装,教您如何安装u盘驱动程序
- 百度通用文字识别离线SDK部署(c#)
- 盾神与砝码称重java_[蓝桥杯][算法提高VIP]盾神与砝码称重 (Java代码)
- 壳的机制以及脱壳技术
- python简历模板_于是我用 Python 重写了那个上千 star 的“开源”简历模板
- BeyondCompare的三种破解方法
- 动态规划-分苹果:m个苹果,n个盘子的分法个数
- 杭州最新公交线路一览(150-)