字符串压缩(华为2014,机试)

原创 2013年12月04日 11:01:51

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX_RLEN 50

/* Returns the Run Length Encoded string for the
   source string src */
char *encode(char *src)
{
    int rLen;
    char count[MAX_RLEN];
    int len = strlen(src);

    /* If all characters in the source string are different,
      then size of destination string would be twice of input string.
      For example if the src is "abcd", then dest would be "a1b1c1d1"
      For other inputs, size would be less than twice.  */
    char *dest = (char *)malloc(sizeof(char)*(len*2 + 1));

    int i, j = 0, k;

    /* traverse the input string one by one */
    for(i = 0; i < len; i++)
    {

        /* Copy the first occurrence of the new character */
        dest[j++] = src[i];

        /* Count the number of occurrences of the new character */
        rLen = 1;
        while(i + 1 < len && src[i] == src[i+1])
        {
            rLen++;
            i++;
        }

        /* Store rLen in a character array count[] */
        sprintf(count, "%d", rLen);                 //防止数目过大

        /* Copy the count[] to destination */
        for(k = 0; *(count+k); k++, j++)
        {
            dest[j] = count[k];
        }
    }

    /*terminate the destination string */
    dest[j] = '\0';
    return dest;
}

/*driver program to test above function */
int main()
{
    char str[] = "geeksforgeeks";
    char *res = encode(str);
    printf("%s", res);
    getchar();
}
Time Complexity:O(n)


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

字符串压缩(华为2014校园招聘的机试题目)

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则:     1、仅压缩连续重复出现的字符。比如字符串...

华为2014校园招聘的机试题目解答——字符串压缩

题目来源:JULY博客 http://blog.csdn.net/v_july_v/article/details/11921021 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串...

华为2014机试字符串压缩

华为2014校园招聘的机试题目 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则:     1、仅...

算法思维——字符串压缩程序(华为2014校园招聘的机试题目)

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则:     1、仅压缩连续重复出现的字符。比如字符串"a...
  • fzuim
  • fzuim
  • 2016-10-21 15:16
  • 222

2014华为机试之字符压缩字符过滤字符串加减法

1.字符过滤     通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过...

2014华为机试-在字符串中找出连续最长的数字串

在字符串中找出连续最长的数字串 描述: 题目描述   请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串; 注意:数字串只需要...

2014华为机试-判断输入的字符串是不是一个有效的IP地址

判断输入的字符串是不是一个有效的IP地址 请实现如下接口 bool isIPAddressValid(const char* pszIPAddr) 输入:pszIPAddr 字符串 输出:tr...

字符串通配符匹配-2014华为机试题目

题目:子串匹配母串,如果匹配,输出子串匹配的起始位置,否则输出-1。?可以代表一个字符,*代表一个或者多个。 从键盘输入,先输入子串,再输入母串。子串母串长度均小于20。运行时间和内存无限制。 ...

2014华为机试-字符串替换

题目要求:输入一个字符chuang

华为机试—字符串压缩

题目:字符串压缩 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1. 仅压缩...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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