删除字符串中重复的字符

原创 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;
}

删除字符串中重复字符。

题目:删除字符串中重复字符。如果可以,优先删除重复字符中排在比他小字符前面的字符。 比如,输入:bbcacdww;输出:bacdw 分析:如果根本不允许开设数组,则只能就地进行字符串去重,那么可以依次...
  • Number_0_0
  • Number_0_0
  • 2017年08月05日 11:51
  • 1136

Java删除字符串中重复的String类型的字符

注意“,”符号。第一个“,”是判断从哪分割,第二个“,”是往新字符串中加入“,”。 // 删除字符串中相同的字符 private static String removeSameString(S...
  • wl724120268
  • wl724120268
  • 2016年11月02日 09:27
  • 2131

剑指offer 面试题35扩展:删除字符串中所有重复出现的字符 (C++版)

题目描述: 定义一个函数,删除字符串中所有重复出现的字符。例如输入“google”,删除重复的字符之后的结果是“gole”。 思路分析: 创建一个bool型数组作为哈希表,数组下标对应字符的ascii...
  • Mary19920410
  • Mary19920410
  • 2017年08月20日 09:46
  • 409

C++实现删除字符串中所有重复出现的字符

C++实现删除字符串中所有重复出现的字符
  • wordwarwordwar
  • wordwarwordwar
  • 2014年10月10日 14:44
  • 1565

给定一个字符串,去除整个字符串中重复的字符

该题与我前面的一篇博客判断一个字符串是否是唯一的很相似。可以分两种情况来讨论:1、不许使用额外的存储空间;2、可使用额外的存储空间 s表示待处理的字符串,l表示当前非重复字符的个数 1、不许使用额...
  • wang11234514
  • wang11234514
  • 2013年11月27日 21:49
  • 3452

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

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

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

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

如何删除字符串中重复的字符

1.蛮力法。(最简单的方法是把字符串看成一个字符数组,对该字符数组使用双重循环遍历,如果发现有重复的字符,就把该字符置为'\0',最后再把这个字符数组中所有的'\0'去掉,此时得到的字符串就是删除重复...
  • wangyang55555
  • wangyang55555
  • 2015年09月02日 08:26
  • 2140

【原】完全删除字符串中连续相同的字符

//////////////////////////////////////////////////////// //filename: deleteDouble.c //description:...
  • dh_fa
  • dh_fa
  • 2010年10月08日 14:41
  • 3336

去除字符串中重复字符

字符串去重
  • MMChinaMM
  • MMChinaMM
  • 2015年09月18日 20:45
  • 1842
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:删除字符串中重复的字符
举报原因:
原因补充:

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