一个字符串 ring ,表示刻在外环上的编码;给定另一个字符串 key ,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。
最初,ring 的第一个字符与 12:00 方向对齐。您需要顺时针或逆时针旋转 ring 以使 key 的一个字符在 12:00 方向对齐,然后按下中心按钮,以此逐个拼写完 key 中的所有字符。
旋转 ring 拼出 key 字符 key[i] 的阶段中:
您可以将 ring 顺时针或逆时针旋转 一个位置 ,计为1步。旋转的最终目的是将字符串 ring 的一个字符与 12:00 方向对齐,并且这个字符必须等于字符 key[i] 。
如果字符 key[i] 已经对齐到12:00方向,您需要按下中心按钮进行拼写,这也将算作 1 步。按完之后,您可以开始拼写 key 的下一个字符(下一阶段), 直至完成所有拼写。
对于字符串key,每一位都需要一次确定,字符串ring总共n位,当前位置i,最多需要向前或向后搜索n/2次
int findRotateSteps(char* ring, char* key) {int r = 0, count = 0;int i = 0, j = 0, k = 0, n = 0;r = strlen(ring);k = strlen(key); //求字符串长度count = k;for (n = 0; n < k; n++) { //对key的每个字母printf(" %c", key[n]);//当前ring[i]for (j = 0; j <= r / 2; j++) { //转j次if (ring[(