首页 > 编程知识 正文

今日头条校招流程,今日头条校招官网

时间:2023-05-06 14:48:02 阅读:217947 作者:44

题目1: String Shifting

题目描述:

我们规定对一个字符串的shift操作如下:

shift("ABCD",0)="ABCD"shift("ABCD",1)="BCDA"shift("ABCD",2)="CDAB"

换言之, 我们把最左侧的N个字符剪切下来, 按序附加到右侧.

给定一个长度为n的字符串, 规定最多可以进行n次循环shift操作。 
如果shift(string, x) = string(0 <= x < n). 我们称其为一次匹配(match), 求shift过程中匹配的次数…

输入描述 
输入仅包括一个输入的字符串, 字符串中仅有大小写字母

输出描述 
输出仅包括一行, 即匹配的次数

样例输入:

byebyebye

样例输出:

3

hint: 
30%的样例中输入字符串的长度<100, 
100%的样例中输入字符串的长度<10^6

public class Main { public char[] reverse(char[] array, int b, int e) { char temp; for (; b < e; b++, e--) { temp = array[b]; array[b] = array[e]; array[e] = temp; } return array; }//reverse public String shift(String s, int k) { if (k == 0) { return s; } int n = s.length(); char[] array = s.toCharArray(); array = reverse(array, 0, n - k - 1); array = reverse(array, n - k, n - 1); array = reverse(array, 0, n - 1); return String.valueOf(array); }//shift public int match(String s) { int count = 0, n = s.length(); String s2 ; for (int i = 0; i <n; i++) { s2 = shift(s,i); System.out.println(i+","+s2); if (s.equals(s2)) { count++; } }//for return count; }//match public static void main(String[] args) { Main main = new Main(); String s = "byebyebye"; System.out.println(main.match(s)); }//main}//0,byebyebye//1,ebyebyeby//2,yebyebyeb//3,byebyebye//4,ebyebyeby//5,yebyebyeb//6,byebyebye//7,ebyebyeby//8,yebyebyeb//3





win7中qq截图快捷键是什么

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。