精华内容
下载资源
问答
  • //判断输入输出的字符串数组是否为空 if(input == NULL || output == NULL) { //如果为空,返回错误码 return -1 ; } //用查询的方法遍历数组的每一个元素 for(i = 0 ; i (input) ; i++) { //把标志...
    #include <stdio.h>
    #include <string.h>
    #define NR(x)  sizeof(x)/sizeof(x[0])
    int Del_char(const char *input, char *output)
    {
        int i , j , k = 0;
        int flag ;
        int len ;
        //判断输入输出的字符串数组是否为空 
        if(input == NULL  || output == NULL)
        {
            //如果为空,返回错误码 
            return -1 ; 
        }
        //用查询的方法遍历数组的每一个元素 
        for(i = 0 ; i < NR(input) ; i++)
        {
            //把标志位置一 
            flag =1 ;
            //在遍历一遍数组,这个for用来与上面的进行比较,如果出现相同的
            //就把标志位置0 
            for(j = 0 ; j < i ; j++)
            {
                if(input[i] == input[j])
                    flag = 0 ;      
            }    
            //如果标志位被置1,表示没有重复的元素,这时候,将不重复的元素
            //从数组的首元素的地方开始往后排列 
            if(1 == flag){
                output[k++] = input[i] ; 
            }
        }
        //最后加一个伪0作为结束 
        output[k] = '\0' ; 
        puts(output);        
        return 0 ;
    }
    
    
    int main()
    {
         char str_input[10];
         char str_output[10]={"0"};
         printf("请输入你的字符串:");
         scanf("%s",&str_input);
         Del_char(str_input,str_output);
         getchar();
         getchar();
         return 0 ;
    }
    

    展开全文
  • C语言字符串中删除重复的字符的算法C语言字符串中删除重复的字符的算法完整源码(定义,实现,main函数测试) C语言字符串中删除重复的字符的算法完整源码(定义,实现,main函数测试) #include <iostream> #...

    C语言字符串中删除重复的字符的算法完整源码(定义,实现,main函数测试)

    #include <iostream>
    #include <cstring>
    
    using std::string;
    using std::cin;
    using std::cout;
    using std::endl;
    string removeDuplicates1( const string & str )
    {
        int len = str.length();
        if ( len < 2 ) {
            return str;
        }
        int check = 0;
        string result("");
        for ( auto & ch : str ) {
            int c = (int)( ch - 'a');
            if ( (check & ( 1 << c )) == 0) {
                result += ch;
                check |= ( 1 << c);
            }
        }
        return result;
    }
    string removeDuplicates2 ( const string & str )
    {
        int len = str.length();
        if ( len < 2 )
            return str;
        string result("");
        bool check[256];
        for ( auto & ch : str ) {
            if ( !check[(int)ch] ) {
                check[(int)ch] = true;
                result += ch;
            }
        }
        return result;
    }
    string removeDuplicates3( string str )
    {
        int len = str.length();
        if ( len < 2 ) {
            return str;
        }
        string result("");
        for ( int i = 0; i < len; ++i) {
            if ( str[i] != '\0' ) {
                result += str[i];
                for ( int j = i + 1; j < len; ++j ) {
                    if ( str[i] == str[j] ) {
                        str[j] = '\0';
                    }
                }
            }
        }
        return result;
    }
    void removeDuplicates4( char * str )
    {
        int len = std::strlen(str);
        if ( len < 2) {
            return;
        }
        int check = 0;
        int cindx = 0;
        for ( int i = 0; i < len; ++i) {
            int c = (int) ( str[i] - 'a');
            if ( (check & ( 1 << c )) == 0 ) {
                str[cindx++] = str[i];
                check |= ( 1 << c );
            }
        }
        str[cindx] = '\0';
    }
    void  removeDuplicates5( char * str )
    {
        int len = std::strlen(str);
        if ( len < 2 ) {
            return;
        }
        int idx = 0;
        for ( int i = 0; i < len; ++i) {
            if ( str[i] != '\0' ) {
                str[idx++] = str[i];
                for ( int j = i + 1; j < len; ++j ) {
                    if ( str[i] == str[j] ) {
                        str[j] = '\0';
                    }
                }
            }
        }
    }
    void removeDuplicates6 ( char *str )
    {
        int len = std::strlen(str);
        if ( len < 2 )
            return;
        bool check[256] = {false};
        int idx = 0;
        for ( int i = 0; i < len; ++i )
        {
            if ( !check[(int)str[i]] ) {
                check[(int)str[i]] = true;
                str[idx++] = str[i];
            }
        }
        str[idx] = '\0';
    }
    
    int main()
    {
        string str1("aaaabbbbbcddeffgheee");
        string str2("abcd");
        string str3("a");
        string str4("");
        cout << "For method 1:" << endl;
        cout << "original-string:" << str1 << " after removing duplicates:" <<  removeDuplicates1(str1) << endl;
        cout << "original-string:" << str2 << " after removing duplicates:" <<  removeDuplicates1(str2) << endl;
        cout << "original-string:" << str3 << " after removing duplicates:" <<  removeDuplicates1(str3) << endl;
        cout << "original-string:" << str4 << " after removing duplicates:" <<  removeDuplicates1(str4) << endl;
    
    
        cout << "\n\nFor method 2:" << endl;
        cout << "original-string:" << str1 << " after removing duplicates:" <<  removeDuplicates2(str1) << endl;
        cout << "original-string:" << str2 << " after removing duplicates:" <<  removeDuplicates2(str2) << endl;
        cout << "original-string:" << str3 << " after removing duplicates:" <<  removeDuplicates2(str3) << endl;
        cout << "original-string:" << str4 << " after removing duplicates:" <<  removeDuplicates2(str4) << endl;
    
        cout << "\n\nFor method 3:" << endl;
        cout << "original-string:" << str1 << " after removing duplicates:" <<  removeDuplicates3(str1) << endl;
        cout << "original-string:" << str2 << " after removing duplicates:" <<  removeDuplicates3(str2) << endl;
        cout << "original-string:" << str3 << " after removing duplicates:" <<  removeDuplicates3(str3) << endl;
        cout << "original-string:" << str4 << " after removing duplicates:" <<  removeDuplicates3(str4) << endl;
    
    
        cout << "\n\nFor method 4:" << endl;
    
        char str5[] = "aaaabbbbcccc";
        char str6[] = "abcde";
        char str7[] = "a";
        char str8[] = "";
    
        cout << endl;
        cout << "original-string:" << str5 << " after removing duplicates:";
        removeDuplicates4(str5);
        cout << str5 << endl;
        cout << "original-string:" << str6 << " after removing duplicates:";
        removeDuplicates4(str6);
        cout << str6 << endl;
        cout << "original-string:" << str7 << " after removing duplicates:";
        removeDuplicates4(str7);
        cout << str7 << endl;
        cout << "original-string:" << str8 << " after removing duplicates:";
        removeDuplicates4(str8);
        cout << str8 << endl;
    
    
       cout << "\n\nFor method 5:" << endl;
    
        char str9[] = "aaaabbbbccccdddeeefffaaabbb";
        char str10[] = "abcdef";
        char str11[] = "b";
        char str12[] = "";
    
        cout << endl;
        cout << "original-string:" << str9 << " after removing duplicates:";
        removeDuplicates5(str9);
        cout << str9 << endl;
        cout << "original-string:" << str10 << " after removing duplicates:";
        removeDuplicates5(str10);
        cout << str10 << endl;
        cout << "original-string:" << str11 << " after removing duplicates:";
        removeDuplicates5(str11);
        cout << str11 << endl;
        cout << "original-string:" << str12 << " after removing duplicates:";
        removeDuplicates5(str12);
        cout << str12 << endl;
    
       cout << "\n\nFor method 6:" << endl;
    
        char str13[] = "aaaabbbbccccdddeeefffaaabbb";
        char str14[] = "abcdef";
        char str15[] = "b";
        char str16[] = "";
    
        cout << endl;
        cout << "original-string:" << str13 << " after removing duplicates:";
        removeDuplicates6(str13);
        cout << str13 << endl;
        cout << "original-string:" << str14 << " after removing duplicates:";
        removeDuplicates6(str14);
        cout << str14 << endl;
        cout << "original-string:" << str15 << " after removing duplicates:";
        removeDuplicates6(str15);
        cout << str15 << endl;
        cout << "original-string:" << str16 << " after removing duplicates:";
        removeDuplicates6(str16);
        cout << str16 << endl;
    
    
    
    
        cout << endl;
        return 0;
    }
    
    
    展开全文
  • 删除字符串中连续的重复字符 题目:实现删除字符串中连续的重复字符(除字母和数字)。 输入为字符串,将字符串中连续重复的,不是字母且不是数字的字符删去,然后输出处理后的字符串。 输入字符串最长50个字符,...

    删除字符串中连续的重复字符

    题目:实现删除字符串中连续的重复字符(除字母和数字)。

    输入为字符串,将字符串中连续重复的,不是字母且不是数字的字符删去,然后输出处理后的字符串。
    输入字符串最长50个字符,之后截断,只输出处理后的字符串。

    例如
    输入11+++2==13回车
    输出11+2=3

    代码:
    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>

    int main(){
    char a[51];//这里定义两个数组,我打算以数组b来输出数组a的值,并去掉重复的值
    char b[51]={0};
    int i,j=1;
    scanf("%50s",a);
    b[0]=a[0];
    for(i=1;a[i]!=’\0’;i++)//判断不为结束符时
    {
    if(a[i]<‘0’||a[i]>‘z’||(a[i]>‘9’&&a[i]<‘A’)||(a[i])>‘Z’&&a[i]<‘a’)//判断不是字母和数字时
    {
    if(a[i]==b[j-1])//当a一个元素值等于b里面对应位置的前一个值时,直接跳过,然后进行下一次for循环
    {
    continue;
    }
    b[j] = a[i];//将a里面的值和赋给对应的b位置上
    j++;
    }
    }
    printf("%s",b);
    return 0;
    }

    有错误的地方希望大家指出来,互相讨论_

    展开全文
  • #include<stdio.h> /*使用n=strlen(s)时加这个#include<string.h>*/ int main(void) { char s[100];... printf("请输入一串有重复字符字符串:\n"); gets_s(s);/*输入字符串*/ f...
    #include<stdio.h>
    /*使用n=strlen(s)时加这个#include<string.h>*/
    int main(void)
    {
        char s[100];/*定义变量*/
        int i, j, n, k;
        printf("请输入一串有重复字符的字符串:\n");
        gets_s(s);/*输入字符串*/
        for (n = 0; s[n] != '\0'; n++)
    ;

    /*用于得到字符串长度,也可以使用n=strlen(s);*/ for (i = 0; i < n ; i++) { for (j = k = i + 1; j < n ; j++) if (s[j] != s[i]) s[k++] = s[j]; s[k] = '\0'; } printf("去掉重复字符后结果为:\n"); puts(s); /*也可以这样写,printf("去掉重复字符后结果为:%s\n", s);*/ }

     

    展开全文
  • 删除字符串中指定字符 字符串的处理,不仅在c语言中有着极其中重要的地位,在其他的语言中也必不可少。在算法比赛中,对字符串的处理也有相应的题目,第一个代码是删除字符串中指定的代码。通过i和j两个指针,如何...
  • 字符串重复JDK开发组研究得出的一组有趣的统计数据:1.java应用内存里面的字符串占比大概是25%。2.java应用内存里面的字符串有13.5%是重复的。3.字符串的平均长度是45。什么是重复字符串呢?看下面的代码:String ...
  • 这是之前做PAT乙级1029旧键盘时遇到的一个问题,大概就是我现在得到了一个字符串,但是其中相同的字符只需要输出一次,我当时没能想出好的...直到今天看到了一个删除字符串中给定的字符的代码,一步步执行下就理解了。
  • 1.将字符串中所有的重复元素的字符删除,只留下出现一次的字符 C语言是实现这个算法的过程有很多,比如说暴力拆解,新申请数组等等 今天小编给大家主要说说如何新申请数组简单理解这个算法 首先这个数组长度是不确定...
  • 给出由小写字母组成的字符串S,重复删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复删除操作,直到无法继续删除。 在完成所有重复删除操作后返回最终的字符串。答案保证唯一。 ...
  • 删除字符串中的所有相邻重复项 (C语言) 一. 题目 二. 思路 这道题很明显需要用到栈这个数据结构,我们可以用数组来模拟实现栈,top为栈顶指针,当top = -1时表示栈为空,当栈中有一个元素时, top = 0。从头依次...
  • 题目:输入一个长度不超过100的字符串,然后输入一个字符,通过程序将字符串中该字符删除并输出最后的字符串,要求字符串存放在数组中,字符串的输入与输出,在主函数中实现删除字符,在自定义函数deletechar中实现...
  • Ⅰ、删除串中重复字符: ①、//代码摘下直接可以运行 //删除串中重复字符 #include<stdio.h> #include <string.h> int main() {char str1[100], str2[100]; int i, j, n; printf ("Enter string...
  • 给出由小写字母组成的字符串 S,重复删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复删除操作,直到无法继续删除。 在完成所有重复删除操作后返回最终的字符串。答案保证唯一。 示例...
  • 最近因为因为一些事情需要回顾c语言数组去重的算法,在网上查阅了很多文档和别人写的算法,看了着实有点烦。于是自己总结了两种! 也可以算作最容易理解的2种c语言实现:数组去重的方法吧(哈哈哈哈) 不信往下看!...
  • 给出由小写字母组成的字符串 S,重复删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复删除操作,直到无法继续删除。 在完成所有重复删除操作后返回最终的字符串。答案保证唯一。 示例:...
  • #define LEN 0xffff char * removeDuplicates(char * S){ char *ret = (char *)malloc(sizeof(char) * LEN); int index = 0; int i=0; if(*S == '\0') return NULL; for(i=0; S[i]!...
  • bool isSubsequence(char * s, char * t){ char *a = s; char *b = t; while( *b && *a) { if(*b == *a) { a++; } b++; } if(*a == '\0') return true; else return false;...}
  • 删除一个字符串中的指定字符(字母区分大小写) 输入 一个原始字符串,一个欲删除的字符集(该字符集元素不重复) 输出 删除指定字符后的字符串(按ASCII码序升序)。特别地,若删除后的字符串为空,输出null ...
  • c语言删除重复字符

    万次阅读 2014-02-27 10:05:47
    给定一个字符串,将字符串中所有和前面重复多余的字符删除,其余字符保留,输出处理后的字符串。需要保证字符出现的先后顺序,并且区分大小写。 详细描述: 接口说明 原型: int GetResult(const char *input, char ...

空空如也

空空如也

1 2 3 4 5
收藏数 91
精华内容 36
关键字:

删除字符串中重复字符c语言

c语言 订阅