题目
分析
- 对一个字符循环右移k位(k小于等于字符长度n)的一般做法就是先将字符前(n-k)位和后k位分别翻转,最后再对字符整体翻转一次,因此对一个字符循环右移k位最多有三次翻转。
- 如果n=1或者k =0,那么不需要翻转
- 如果n=2且k=1时,只需要翻转一次
- 如果k=1或者k=n-1,只需要翻转两次
- 如果k=2或者k=n-2,只需要翻转两次,如12345,先将前四位翻转43215,再将后四位翻转45123,共需要翻转两次
- 其余情况均翻转三次
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;
}
}
}