字符串的小算法

转载 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
}


C#实现字符串SHA-256加密算法

  • 2017年11月16日 12:53
  • 93KB
  • 下载

相似字符串匹配过滤算法研究.

  • 2016年04月15日 09:56
  • 12.05MB
  • 下载

字符串的特征向量与KMP算法

字符串的特征向量就是由字符串各位置上的特征数构成的一个向量。设字符串为P,令Pi为从字符串首字母到第i个位置的前缀,则字符串P的i位置上的特征数就是Pi的首尾非空真子串匹配的最大长度。例如:字符串ab...

Sunday字符串匹配算法的效率改进

  • 2015年05月04日 19:50
  • 1.64MB
  • 下载

计算两个中文字符串相似度——编辑距离算法

1、Javapublic static void levenshtein(String str1, String str2) { // 计算两个字符串的长度。 int len1 = str...

字符串匹配的KMP算法

  • 2014年05月29日 14:11
  • 2.02MB
  • 下载

Boyer-Moore字符串搜索算法.ppt

  • 2013年08月21日 18:50
  • 213KB
  • 下载

在一个字符串中,统计大写字母个数,小写字母个数,其他字符个数的四种算法

题目描述:编写程序,输出字符串中的大写字母、小写小母和其他的个数

字符串模式匹配KMP算法详解.doc

  • 2012年05月24日 13:15
  • 211KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字符串的小算法
举报原因:
原因补充:

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