删除字符串中重复的字符

原创 2017年01月03日 18:38:05

code

#include<stdio.h>
#include<string.h>

#define OUT_PUT_ARRAY_LEN  32

/*
* @brief Remove the duplicate letter from input string
*
* @param [in]str the input str pointer
* @param [out]pOutputStr the output str pointer
* @param [int|out]outLen the inputed output str length and the length of output str  
*
* @retval None
*
*/
void dedup(const char *str, char* pOutputStr, int *outLen)
{
    int i = 0;
    int j = 0;  
    int k = 0;
    if(NULL == str || NULL == pOutputStr  ){
        printf("The INPUT str || OUTPUT pOutputStr is : NULL !");
        return;
    }

    int stringLen = strlen(str);
    for(i = 0; i < stringLen && k < *outLen; i++){
        char testingChar = str[i];
        for(j = 0; j  < k; j++) {
            if(pOutputStr[j] == testingChar)
                break;
        }
        if( j == k) {
            pOutputStr[k] = testingChar;
            k++;
        }
    }
    pOutputStr[k] = '\0';
    *outLen = k;
}

int main(){
    int outLen = OUT_PUT_ARRAY_LEN;
    char outStr[OUT_PUT_ARRAY_LEN + 1];
    char *inputStr = "aabbbbcccccdddeeefffffaaaa";
    printf("The input string:%s\n", inputStr);
    dedup(inputStr, outStr, &outLen);
    printf("The output string:%s, the output string Len: %d\n", outStr, outLen);
                                                                                                           30,5          96%
    dedup(inputStr, outStr, &outLen);
    printf("The output string:%s, the output string Len: %d\n", outStr, outLen);
}
~  

Makefile :

CC=/opt/codesourcery/arm/bin/arm-linux-gcc 
DEST_OBJ := dedup 

CFLAGS += -static 

OBJ_DIR := .
SRCS    := dedup.c

OBJS    := $(patsubst %.c, $(OBJ)%.o, $(filter %.c, $(SRCS)))

all release debug: $(DEST_OBJ) 

$(DEST_OBJ) : $(OBJS)
        $(CC) $(CFLAGS) $(OBJS) -o $(DEST_OBJ) 


clean cleanall:
        rm  -fr $(DEST_OBJ) $(OBJS)

Push Shell :

chmod +x dedup;
adb connect 10.86.60.31;
adb -s  10.86.60.31:5555 remount ;
adb -s  10.86.60.31:5555 push  dedup /system/bin;
adb -s  10.86.60.31:5555 shell sync;

Test

这里写图片描述

其他方法

int GetResult(const char *input, char *output)
{
    if(input==NULL || output == NULL)
        return -1;
    vector<char> char_vec;
    vector<char>::iterator it;
    while(*input!='\0')
    {
        for(it=char_vec.begin();it!=char_vec.end();++it)
        {
            if(*it == *input)
            {
                break;
            }
        }
        if(it == char_vec.end())
        {
            char_vec.push_back(*input);
            *output++=*input;
        }
        ++input;
    }
    *output='\0';
    return 0;
}


int GetResult2(const char *input, char *output)
{
    if(input == 0 || output == 0)
        return -1;
    int i = 0;
    bool ch[129];
    for(i = 0; i < 129;i++)
        ch[i] = false;
    for(i = 0; *input != '\0' ; input++){
        if(!ch[*input]){
            ch[*input] = true;
            *output++ = *input;
        }
    }
    *output = '\0';
    return 0;
}

相关文章推荐

Linux基础day4,shell编程,感觉比较经典的:删除字符串中重复字符

Linux基础,第四天 课程内容:shell基础 文件清单: shiyan1.sh:第一期讲义实验6.1,使用test测试编写unload程序,达到文件卸载的功能 shiyan2.sh...
  • mjfmjj
  • mjfmjj
  • 2013年11月21日 19:31
  • 1334

删除字符串中重复的字符

出自CareerCup 书中有错误,对于多个重复,解析不正确 Design an algorithm and write code to remove the duplicate characte...
  • ustcxjt
  • ustcxjt
  • 2012年04月11日 13:19
  • 962

删除字符串中相邻三个或以上重复的字符

前几天2016年9月9日,参加了阿里2016年的笔试编程题,由于自己现在的编程能力还很薄弱,所以投的岗位是测试工程师,现在把那天做的一道编程题写下来,希望自己在以后的编程能力可以慢慢得到提高,哈哈。 ...

[算法]删除字符串中重复的字符

如何删除字符串中重复的字符问题描述: 删除字符串中重复的字符,例如,”good”去掉重复的字符串后就变成”god”。 第一种方法: “蛮力法”,最简单的方法就是把这个字符串看作是一个字符数组,...

删除字符串中相邻三个或以上重复的字符

对于输入的字符串,我们需要完成的任务是从左到右扫描字符串, 如果存在由三个以上(包括三个)连续相同字符组成的字串,就将这个子串从原串中去掉,并将原串剩下的部分拼接到一起。重复上述过程,直到无法去掉任何...

C++,输入字符串,删除重复次数最多的字符

#include #include #include #include #include #include using namespace std; typedef map ...

C语言删除字符串中重复的字符

#include #include #define NR(x) sizeof(x)/sizeof(x[0]) int Del_char(const char *input, char *outp...

实现循环右移和删除小写字母字符串中重复字符——题集(二十)

实现循环右移和删除小写字母字符串中重复字符——题集(二十)       今天分享一下实现循环右移和删除小写字母字符串中重复字符的源代码和测试用例。       实现循环右移的源代码和运行示例。   ...

删除字符串中的重复字符

删除字符串中的重复字符 实现函数int GetResult(char *input, char *output), 要求给定一个字符串,将字符串中所有和前面重复多余的字符删除,其余字符保留,...

删除字符串中的一个字符有重复的也删除掉

#include static void enter(char str[100]); static void delete_str(char str[100],char c); static void...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:删除字符串中重复的字符
举报原因:
原因补充:

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