字符串操作 删除字符

方法巧妙,从字符串s中删除字符c,只需重新对s进行赋值即可,控制好角标,把和c相等的字符忽略。

例如新角标为j,当s[i]!=c时,直接对s[j]赋值为s[i],且向后移动j角标,即:s[j++]=s[i].

当s[i]==c时,j不变,所以下次若找到和c不相同的字符,则直接覆盖这个位置即可。

//从s1中删除和s2相等的字符。
void squeeze(char* s,int c){
    if(s==NULL) return;
    int i=0;int j=0;
    for (i,j;s[i]!=‘\0‘;++i)
    {
        if(s[i]!=c)
            s[j++]=s[i];
    }
    s[j]=‘\0‘;
    return;
}
//将字符串s中任何与字符串c中的字符匹配的字符删除。
void squeeze_version2(char* s,char* c){
    if(s==NULL) return;
    int i;
    int j;
    bool find;
    for (i=0,j=0;s[i]!=‘\0‘;++i)
    {
        find=false;
        for (int m=0;c[m]!=‘\0‘;++m)
        {
            if(s[i]==c[m])
            {
                find=true;
                break;
            }
        }
        if(!find)
            s[j++]=s[i];
    }
    s[j]=‘\0‘;
    return;
}
时间: 2024-10-20 10:01:01

字符串操作 删除字符的相关文章

linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )

在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快. 一.判断读取字符串值 表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$

linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )

在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快. 一.判断读取字符串值 表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$

36.在字符串中删除特定的字符

http://zhedahht.blog.163.com/blog/static/25411174200801931426484/ 题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入"They are students."和"aeiou",则删除之后的第一个字符串变成"Thy r stdnts.". 分析:这是一道微软面试题.在微软的常见面试题中,与字符串相关的题目占了很大的一部分,因为写程序操作字符串能很好的反映我们的

【剑指offer】删除字符也出现在一个字符串

转载请注明出处:http://blog.csdn.net/ns_code/article/details/27110873 剑指offer上的字符串相关题目. 题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.比如.输入"They are students."和"aeiou",则删除之后的第一个字符串变成"Thy r stdnts.". 这里主要要分析两个方面: 1.怎样推断那些字符是须要删除的字符. 同非常多字符串问题一样.能够

C#删除字符串中重复字符的方法

本文实例讲述了C#删除字符串中重复字符的方法.分享给大家供大家参考.具体实现方法如下: 代码如下: #region 删除重复字符 string s = "sdfffffsrlkjesgljfdg03940864e5=_0R9DTGR98YUI\\|||'\\???fdf///"; Response.Write("<br/>String:" + s + "<br/>Result:"); IEnumerable<char

将字符串s1中的任何与字符串s2中字符匹配的字符都删除

编写一个程序,将字符串s1中的任何与字符串s2中字符匹配的字符都删除. 函数原型:void my_squeeze(char s1[], char s2[]) #include <stdio.h> void my_squeeze(char s1[], char s2[]) { int i = 0; int j = 0; while (s2[j]) { while(s1[i]) { if (s2[j]==s1[i]) { while (s1[i+1]) { s1[i] = s1[i + 1]; i

在字符串中删除特定的字符

题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入"I am lavor_zl."和"I love you.",则删除之后的第一个字符串变成"amar_z".要求相对于第一个字符串的长度n时间复杂度为O(n). 解题思路:用一个bool数组保存是否在第二个字符串中出现的所有字符,数组下标表示字符,这个数组的长度为256,因为C/C++中字符总共有256个.遍历第一个字符串,用一个指针或数组下标access来表示当前访问第

从第一个字符串中删除第二个字符串中出现过的所有字符

// 从第一个字符串中删除第二个字符串中出现过的所有字符 #include <stdio.h> char* remove_second_from_first( char *first, char *second ) { if( first == NULL || second == NULL ) { printf("first or/and second should not be NULL\n"); return NULL; } char flag[256]={0}; ch

在字符串中删除特定字符

63.在字符串中删除特定的字符.题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入”They are students.”和”aeiou”, 则删除之后的第一个字符串变成”Thy r stdnts.”. 思路: 1. 位图法 将两个字符串分别转换成bitmap 然后对他们做异或xor运算,得到的结果即为排除了第二个字符串的所有字符, 然后对该结果依次与原字符串的所有字符进行与运算,结果不为零的即为所得    恩 位图真是个好东西啊...时间复杂度o(n+m) 花在了遍历