A串减去B串中的字符



A串减去B串中的字符,要求不生成新的字符串。

定义两个指针i和j,i用于保存字符,j用于扫描字符。思想可以扩展到在字符串中去掉冗余空格等问题。

void func(char *A, const char *B)
{
    int i = 0, j = 0;

    set<char> s;
    while(B[i] != '\0')
        s.insert(B[i++]);

    i = 0;
    j = 0;
    while(true)
    {
        while(s.find(A[j]) != s.end())
            j++;
        if(A[j] == '\0')
            break;
        A[i++] = A[j++];
    }
    A[i] = '\0';
}

int main()
{
    char A[] = "hello";
    char B[] = "le";
    func(A, B);
    cout<<A;
}

下面是删除冗余空格的代码:

void func(char *A)
{
    int i = 0, j = 0;
    while(A[j] == '_')
        j++;
    A[i] = A[j++];
    while(A[i] != '\0')
    {
        while(A[j] == '_')
            j++;
        if(A[j] != '\0')
            A[++i] = '_';
        A[++i] = A[j++];
    }
}

int main()
{
    char s[] = "___A___B_C__";
    cout<<s<<endl;
    func(s);
    cout<<s;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值