字符串的小算法

转载 2016年06月01日 23:30:26

http://www.nowamagic.net/librarys/veda/detail/286

编码实现字符串右移n位,如"diopHeg"右移2位为"egdiopH"

思路1:只要把需要移动的最后n个字符保存下来,把前面剩下的全部后移n个位置,最后把开始保存好的n 个字符填充到前面n个位置。注意:n超过字符串长度的情况,所以事前先做n mod 字符串的长度。

01
int RightMoveStr(char* src,int n)
02
{
03
    int len=strlen(src);
04
    int mov=n%len;
05
    char* rstr=(char*)malloc((mov+1)*sizeof(char));
06
    if(rstr==NULL)
07
    {
08
        return 0;
09
    }
10
    int i=0;
11
    while(i<mov)
12
    {
13
        rstr[i]=src[len-mov+i];
14
        i++;
15
    }
16
    rstr[i]='\0';
17
    i=len-mov-1;
18
    while(i>=0)
19
    {
20
        src[i+mov]=src[i];
21
        i--;
22
    }
23
    i=0;
24
    while(i<mov)
25
    {
26
        src[i]=rstr[i];
27
        i++;
28
    }
29
    free(rstr);
30
    return 1;
31
}
思路2:使用字符串库函数简化编码工作,用一个新的字符串ss保存结果,先把源字符串指针s移到需要右移的子串的第一个字符的位置,如"diopHeg"右移2位就把s移动到指向'e',接着 strcpy(ss,s),把s所指位置赋值为'\0',最后strcat(ss,s)。

01
int RightMove(char* src,char* &ssrc,int n)
02
{
03
    int len=strlen(src);
04
    ssrc=(char*)malloc(sizeof(char)*(len+1));
05
    n=n%len;
06
    if(ssrc==NULL)
07
    {
08
        return 0;
09
    }
10
    int i=0;
11
    char* s=src;
12
    while(i<len-n)
13
    {
14
        s++;
15
        i++;
16
    }
17
    strcpy(ssrc,s);
18
    *s='\0';
19
    strcat(ssrc,src);
20
    return 1;     
21
}


小程序(十五)删除一个字符串中出现最少的字符

将一个字符串中出现次数最少的字符删除,这个字符串只有小写字母,不考虑空格。 #include #include #include char *delChar(char *s,int iLen) { ...
  • lvyuan30276
  • lvyuan30276
  • 2013年08月17日 14:30
  • 723

小程序:去掉字符串最左边的空格

#include  #include  #define N 20 int main() { int i,j,pos;     char str[N]={"he is good"}; po...
  • qq_41660226
  • qq_41660226
  • 2018年01月26日 22:01
  • 113

字符串截取固定长度的方法

这个函数也没有什么特别之处,就是可以截取一定长度的字符串,可能小特点就是len是字节,解决了汉字与英文字节不一样导致直接截取到的长度不一样的问题,  #region 字符串截取函数  public s...
  • 21aspnet
  • 21aspnet
  • 2004年10月24日 23:52
  • 3948

小程序 (五) 字符串分离

#include #include #include void DivideString(const char *pInputStr, long lInputLen, char *pOutput...
  • lvyuan30276
  • lvyuan30276
  • 2013年07月04日 10:38
  • 3031

字符串中常见的三个截取子串的有趣方法

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...
  • HuaiCheng9067
  • HuaiCheng9067
  • 2015年12月20日 17:22
  • 2460

小程序-----输出字符串中的中文字符

今天笔试的时候遇到的一道试题,当时就知道使用正则表达式检查,但是就是不知道具体的实现,好多东西东是这样,导致笔试都没有过,尴尬。。。。。。。。。。。。。 现在把它写出来,没事多总结。 --------...
  • nanianshui
  • nanianshui
  • 2015年09月07日 23:16
  • 449

算法练习 - 字符串包含

这个题目不难,July和他伙伴们在《程序员编程艺术:面试和算法心得》中也分析的非常透彻,从最容易想但是效率最低的循环遍历,到逐渐优化先排序再轮询,再到更为优化的素数乘除法,直到最后的位操作。逐渐进阶,...
  • beggar200
  • beggar200
  • 2015年12月08日 11:24
  • 843

今天写了一个字符串转16进制的小程序,改成C++.Net。

 namespace c ...{    using namespace System;    using namespace System::ComponentModel;    using nam...
  • jiangfuofu555
  • jiangfuofu555
  • 2007年03月28日 17:07
  • 1668

【小程序】请编写一个函数,删除一个字符串的一部分

《c和指针》习题6.2请编写一个函数,删除一个字符串的一部分,函数的原型如下:intdel_substr(char*str,char const *substr)函数首先应该判断substr是否出现在...
  • zhangzm0128
  • zhangzm0128
  • 2016年09月24日 17:45
  • 514

转换数组为字符串

解决办法 使用 join() 方法 讨论 ActionScript 提供内建的方法 join() 可以快速把数组转换为字符串(数组中的元素不管什么类 型都将转换为字符串),该方法接受个...
  • MeetLunay
  • MeetLunay
  • 2012年03月21日 11:15
  • 1125
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字符串的小算法
举报原因:
原因补充:

(最多只允许输入30个字)