[Leetcode学习]Perform String Shifts(字符串移位)

问题:

难度easy

说明:

输入会给一个string以及一个shift数组,shift是一个int[][]二维数组,当int[0] = 0时候往左移动,int[0] = 1往右移动。int[1]则是给出移动多少的位置,而且数组是想象成头尾相连的。

输入输出案例:

Input: s = "abcdefg", shift = [[1,1],[1,1],[0,2],[1,3]]
Output: "efgabcd"
Explanation:  
// 数组往右移动一位,数组最右的字符移到数组头部,就像是数组头尾相连一样,其他移动也是相通概念
[1,1] means shift to right by 1. "abcdefg" -> "gabcdef"
[1,1] means shift to right by 1. "gabcdef" -> "fgabcde"
[0,2] means shift to left by 2. "fgabcde" -> "abcdefg"
[1,3] means shift to right by 3. "abcdefg" -> "efgabcd"

我的代码:

思路是用一个指向string头部指针,然后移动这个指针就行,最后复制和创建一个新的string返回即可,100%RT&M。

不过考虑到数组是头尾相连的概念,头指针移动算法应该是求模。

左移动:head = (head + len - shift[1]) % len;

右移动:head = (head &#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值