某公司门禁密码使用动态口令技术。初始密码为字符串 password,密码更新均遵循以下步骤:
targetpassword 前 target 个字符按原顺序移动至字符串末尾请返回更新后的密码字符串。
示例 1:
输入: password = "s3cur1tyC0d3", target = 4 输出: "r1tyC0d3s3cu"
示例 2:
输入: password = "lrloseumgh", target = 6 输出: "umghlrlose"
解题思路:
1.先翻转target前面的字符; 2.再翻转target后面的字符; 3.最后将整个字符串进行翻转。
- public static String dynamicPassword(String password, int target) {
- int left=0,right=password.length()-1;
-
- //1.先翻转target前面的
- password=reverseString(password,0,target-1);
-
- //2.再翻转target后面的
- password=reverseString(password,target,right);
-
- //3.最后将整个字符串进行翻转
- password=reverseString(password,left,right);
-
- return password;
- }
-
- //翻转区域内字符串
- public static String reverseString(String s,int left,int right){
-
- StringBuilder str=new StringBuilder(s);
- char a;
- while (left
- a=s.charAt(left);
- str.setCharAt(left,s.charAt(right));
- str.setCharAt(right,a);
- left++;
- right--;
- }
- return str.toString();
- }