字符反转问题

题目

在这里插入图片描述

分析

  1. 对一个字符循环右移k位(k小于等于字符长度n)的一般做法就是先将字符前(n-k)位和后k位分别翻转,最后再对字符整体翻转一次,因此对一个字符循环右移k位最多有三次翻转。
  2. 如果n=1或者k =0,那么不需要翻转
  3. 如果n=2且k=1时,只需要翻转一次
  4. 如果k=1或者k=n-1,只需要翻转两次
  5. 如果k=2或者k=n-2,只需要翻转两次,如12345,先将前四位翻转43215,再将后四位翻转45123,共需要翻转两次
  6. 其余情况均翻转三次
import java.util.*;


public class Solution {
    /**
     * 
     * @param n int整型 字符串长度n
     * @param k int整型 循环右移次数k
     * @return int整型
     */
    public int solve (int n, int k) {
        // write code here
        //如果字符长度为1,不需要翻转
        if(n == 1) {
            return 0;
        }
         k = k % n;
        if(n == 2 && k == 1) {
            return 1;
        }
       
        if(k == 0) {
            return 0;
        } else if(k == 1 || k == n-1 || k == 2 || k == n-2) {
            return 2;
        }else {
            return 3;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值