CottLi
3/11/2020 - 2:51 AM

字符串去重

// 去除重复的字符:新建另一字符串,把原字符串的字符一个一个往新字符串
// 中放,但在放的同时判断该字符在新串中是否已存在,如果已存在则丢弃该
// 字符,否则则放入新串中

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

int main()
{
    char str1[100], str2[100];
    int i, j, n;    // i,j为循环变量,n为字符串2中的字符个数
    printf ("Enter string:");
    gets ( str1 );  // 读入字符串
    n = 0;          // 初始状态,新字符串的字符个数为 0
    // 遍历待去重字符串的每个字符
    for ( i=0; str1[i]!='\0'; i++)
    {
        // 判断第i个字符在新串中是否已存在
        for (j=0;j<n;j++)
            if(str1[i]==str2[j])    // 如果存在则强制退出循环,此时 j < n
                break;
        // 当 j==n时,意味着上面的循环完整执行而没有中途退出;
        // 这表明第i个字符在新串中存在
        if ( j == n )     /* 不重复,则拷贝 */
            str2 [ n++ ] = str1 [ i ];  
    }
    // 一定别忘记在新串的末尾加上结束标记 \0
    str2[n]='\0';
    printf("Result:");
    puts ( str2 );
}