字符串右移N位题目

当初想了半天没想出来。。(脑子太笨了。。。。T.T)

回家仔细考虑了下。 实现如下:

void
move_string(char *msg, int steps)
{
  int len;
  int pos;
  int head;
  char tmp;
  int count;
  
  if(msg == NULL)return;
  len = strlen(msg);
  steps = steps % len;
  head = 0;
  count = 0;

  while(1){
    tmp = msg[head];

    if(pos + steps >= len){
      count++;
    }
    
    pos = (pos + steps) % len;
    // back to head do next loop.
    if(pos == head){
      if(count == steps){
	break;
      }
      head++;
      pos = head;
      continue;
    }
    msg[head] = msg[pos];
    msg[pos] = tmp;
  }

  printf("the result : %s\n", msg);
}
时间: 2024-11-11 10:14:02

字符串右移N位题目的相关文章

【C语言】请实现字符串循环右移函数。列如字符串“abcdefghi”向右移2位就是“hiabcdefg”

// 请实现字符串循环右移函数.列如字符串"abcdefghi"向右移2位就是"hiabcdefg" // 函数原型为:void RightLoopMove(char *pstr,unsigned short steps) #include <stdio.h> #include <assert.h> #include <string.h> void severse(char *p,char *q) //字符串翻转 { char t

NYOJ字符串右移

字符串右移 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 LZQ最近迷上了字符串,于是他有一个问题想考你,聪明的你一定知道答案.问题如下:给你一个字符串,让你对其进行向右移动K次,输出新的字符串. 输入 输入数据有多组,每组有一个字符串STR与一个数字K,表示对字符串STR向右移动K位. 输出 输出新的字符串STR1. 样例输入 abcd1234 4 sdfe123f 10 样例输出 1234abcd 3fsdfe12 来源 原创 #include<cstdio>

NYOJ 658 字符串右移

字符串右移 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 LZQ最近迷上了字符串,于是他有一个问题想考你,聪明的你一定知道答案.问题如下:给你一个字符串,让你对其进行向右移动K次,输出新的字符串. 输入 输入数据有多组,每组有一个字符串STR与一个数字K,表示对字符串STR向右移动K位. 输出 输出新的字符串STR1. 样例输入 abcd1234 4 sdfe123f 10 样例输出 1234abcd 3fsdfe12 AC码: #include<stdio.h>

GUID转换成16位字符串或19位唯一字符串

整理几个常用GUID转换成16位字符串或19位唯一字符串方法: /// <summary> /// 根据GUID获取16位的唯一字符串 /// Author : 付义方 /// </summary> /// <param name=\"guid\"></param> /// <returns></returns> public static string GuidTo16String() { long i = 1;

php crc32 计算字符串的 32 位 CRC(循环冗余校验)

注:本文转载 http://www.manongjc.com/article/499.html php crc32函数用于生成字符串的 32 位循环冗余校验码多项式.这通常用于检查传输的数据是否完整.本文章向大家介绍php crc32函数的基本语法及使用实例.需要的码农可以参考一下. crc32函数计算一个字符串的 crc32 多项式 crc32函数基本语法 int crc32 ( string $str ) 生成 str 的 32 位循环冗余校验码多项式.这通常用于检查传输的数据是否完整. 提

hdu 2721(字符串处理,位运算 暴力)

Persistent Bits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 201    Accepted Submission(s): 116 Problem Description WhatNext Software creates sequence generators that they hope will produce

[算法]字符串左移k位

如,abcde左移3位为deabc 要求时间复杂度O(n),空间复杂度O(1),每一个字符只能遍历一次 摘自http://blog.csdn.net/geniusluzh/article/details/8460031 利用数学解决该问题 其实对于这道题,最初一看的想法就是将当前位依次替换左移m位对应的那个位,然后依次替换.后来发现有的情况一次循环替换就能全部完成整个串的左移,而有的情况下会出现多个循环链,一时只得到规律,不能想到很好的证明办法,只怪以前初等数论没有好好学啊! 我们发现对于长度为

[问题笔记][指针相加翻译成汇编右移2位]

问题描述: 创建MMU的转换表,在构建每个表项时,基地址指针加上相对偏移,翻译成汇编,偏移被右移了2位,再加上基地址. 问题分析: vaddr的高12位是段地址相对于基地址的偏移数,MMU在寻址时会根据vaddr高12位的偏移乘以4变成相对地址来找到表项的偏移地址.所以指针翻译成汇编右移2位表示的是乘以4,计算出相对于基地址的偏移地址,而不是偏移数. unsigned long *ttb; unsigned long vaddr; ttb = ttb + (vaddr >> 20); ldr

2015福富福大笔试——实现字符串右移

前两天参加了福富在福大的宣讲会,并且参加了笔试,最后一道大题,这里讲一下当时我的解法,大概的题意是这个样子的,只能使用c的库,实现一个函数void MakeString(char *pStr,int n)(ps:这里的函数名是我现在取的,想不起来考题给的是什么了),函数要求是以'\0'结尾的字符串pStr,一个需要右移的字符个数n,实现类似输入这样MakeString("abcdefghi",2),字符串右移后变成:hiabcdeg: 以下给出我当时的解法,希望各位看官有什么意见或者建