题目:

给定一个包含小写英文字母的字符串 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. 字符串的左右移相关推荐

  1. LeetCode 1427. 字符串的左右移

    文章目录 1. 题目 2. 解题 1. 题目 给定一个包含小写英文字母的字符串 s 以及一个矩阵 shift,其中 shift[i] = [direction, amount]: direction ...

  2. 【LeetCode】1427、字符串的左右移

    [声明] 如果有侵权,请联系作者删除侵权部分. 如果有错误,请联系作者修改错误部分. 如果有转载,请标明出处. [难度] 简单 [题目] 给定一个包含小写英文字母的字符串 s 以及一个矩阵 shift ...

  3. 字符串循环左|右移实现(C|C++)

    一.字符串循环右移K位 (1)图解思考 (2)代码实现 时间复杂度O(n) | 空间复杂度O(1) // 三次翻转实现 #include <iostream> #include <c ...

  4. C练题笔记之:牛客-HJ029.字符串加密

    题目: 1.对输入的字符串进行加解密,并输出. 2.加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B:字母Z时则替换为a: 当内容是数字时则把该 ...

  5. C练题笔记之:Leetcode-第 85 场双周赛---6157. 二进制字符串重新安排顺序需要的时间

    emm...第一次参加比赛..着实看到了差距之大 题目: 给你一个二进制字符串 s .在一秒之中,所有 子字符串 "01" 同时 被替换成 "10" .这个过程 ...

  6. C练题笔记之:Leetcode-1455. 检查单词是否为句中其他单词的前缀

    题目: 给你一个字符串 sentence 作为句子并指定检索词为 searchWord ,其中句子由若干用 单个空格 分隔的单词组成.请你检查检索词 searchWord 是否为句子 sentence ...

  7. C练题笔记之:Leetcode-2055. 蜡烛之间的盘子

    题目: 给你一个长桌子,桌子上盘子和蜡烛排成一列.给你一个下标从 0 开始的字符串 s ,它只包含字符 '*' 和 '|' ,其中 '*' 表示一个 盘子 ,'|' 表示一支 蜡烛 . 同时给你一个下 ...

  8. 刷题笔记之十一 (计算字符串的编辑距离+微信红包+年终奖+迷宫问题+星际密码+数根)

    目录 1. 计算字符串的编辑距离 2. 微信红包 3. 双向链表修改,比如插入新的结点,一定要画图 4. 一颗完全二叉树第六层有9个叶结点(根为第一层),则结点个数最多有109 5. 将N条长度均为M ...

  9. C练题笔记之:Leetcode-12. 整数转罗马数字

    题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 I             1 V             5 X             1 ...

  10. C练题笔记之:牛客-HJ033.整数与IP地址间的转换

    题目: 描述 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成 一个长整数. 举例:一个ip地址为10.0.3.193 每段数字     ...

最新文章

  1. 用rufus f2 制作Ubuntu16.04 U盘启动盘
  2. 顺序队列相关操作(C语言实现)
  3. mysql计算某一天所在周或月的第一天和最后一天
  4. Balanced Team
  5. php yanzhengm,ThinkPHP 在使用M方法(不创建模型类)时实现自动验证与自动填充
  6. mysql改国标码_MySQL 优化实施方案
  7. 热像仪 二次开发 c++_重庆多功能红外线热像仪方案
  8. 强悍的命令 —— cp
  9. python自动化测试-python能够做软件的自动化测试吗?
  10. 操作系统 汤子瀛版 读书总结
  11. python爬取酷狗音乐歌词_python爬虫教程:爬取酷狗音乐
  12. 11(3)-AirSim+四旋翼仿真-AirSim中人工势场法方法改进
  13. 人工智能实验:猴子摘香蕉问题(Python代码实现)
  14. Ubuntu 16.04静态IP设置
  15. MATLAB实现空间前方交会-后方交会计算
  16. Yii Framework 开发教程(29) Zii组件-Menu 示例
  17. 不能用float、double 存储金额——BigDecimal详解
  18. 你绝对不能错过的7款开源硬件架构
  19. 无法解析大于号和小于号
  20. 在一个批处理系统中有两个作业进程,一个作业序列其到达时间及估计运行时间如下表作业 到达时间

热门文章

  1. php 开源系统(cms),30个很棒的PHP开源CMS内容管理系统
  2. 企鹅CMS开源影视系统
  3. 计算机驱动程序的安装过程,u盘驱动程序安装,教您如何安装u盘驱动程序
  4. 百度通用文字识别离线SDK部署(c#)
  5. 盾神与砝码称重java_[蓝桥杯][算法提高VIP]盾神与砝码称重 (Java代码)
  6. 壳的机制以及脱壳技术
  7. python简历模板_于是我用 Python 重写了那个上千 star 的“开源”简历模板
  8. BeyondCompare的三种破解方法
  9. 动态规划-分苹果:m个苹果,n个盘子的分法个数
  10. 杭州最新公交线路一览(150-)