LCR 182. 动态口令

文章介绍了如何使用动态口令技术更新门禁密码,通过将指定位置的字符移动到字符串末尾,提供两种方法的代码实现,包括使用`push_back`和局部反转操作。

题目:LCR 182. 动态口令

某公司门禁密码使用动态口令技术。初始密码为字符串 password,密码更新均遵循以下步骤:

设定一个正整数目标值 target
将 password 前 target 个字符按原顺序移动至字符串末尾
请返回更新后的密码字符串。

示例 1:

输入: password = “s3cur1tyC0d3”, target = 4
输出: “r1tyC0d3s3cu”

思路:

1.可以使用push_back函数先将前面的字符串连到后面,再删除前面原本的字符串

2.可以使用局部反转

语法知识:

  1. password.push_back(password[i]); 是将password[i]压入password字符串的后面
  2. ==password.erase(0, target);==是将字符串password[0]-password[target]给删除

代码:

//方法一
class Solution {
public:
    string dynamicPassword(string password, int target) {
     int len = password.length();
     for(int i=0;i<target;i++)
     {
       password.push_back(password[i]);
     }
     password.erase(0, target);
     return password;
    }
};
//方法2;
class Solution {
public:
    string reverseLeftWords(string s, int n) {
        n %= s.size();
        // 翻转前n项
        reverse(s.begin(), s.begin() + n);
        // 翻转剩余项
        reverse(s.begin()+n, s.end());
        // 整体翻转
        reverse(s.begin(), s.end());
        return s;
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值