欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 算法:字符串运算

算法:字符串运算

2025/2/26 22:55:18 来源:https://blog.csdn.net/qingttqing/article/details/143434816  浏览:    关键词:算法:字符串运算

字符串运算

  • 1. 基本字符串运算
    • 求串长
    • 串拷贝
    • 串比较
  • 2. 串的模式匹配
    • 布鲁斯-福特算法
  • 3. 字符串转换
    • 3.1 字符串转换成整数
    • 3.2 字符计数
    • 3.3 字符行数计数
    • 3.4 字符单词计数

通常情况下,字符串存储在一维字符数组中。

1. 基本字符串运算

基本操作:赋值(拷贝)、连接、比较、求串长、求子串等。

求串长

计算给定串中除结束标志字符’\0’之外的字符数目。

int strlen(char *s)
{int n=0;while(s[n]!='\0')n++;return n;
}

串拷贝

将源串复制给目标串。
strcpy()函数

int strcpy(char *dest,char *src)
{int i=0;while(src[i]!='\0'){dest[i]=src[i];i++;}dest[i]='\0';return dest;
}

串比较

比较第一个不相同的字符,大的那个字符该字符串就大。

int strcmp(char *s1,char *s2)
{int i=0;while(s1[i]!='\0'||s2[i]!='\0'){if(s1[i]==s2[i]) i++;else return s1[i]-s2[i];}return 0;
}

2. 串的模式匹配

串的模式匹配:模式串(或子串)在主串中的定位操作。

布鲁斯-福特算法

此算法为基本的模式匹配算法。其基本思想是从主串的第一个字符起与模式串的第一个字符比较,若相等,则继续逐个字符进行后续比较,否则从主串的第二个字符起与模式串的第一个字符重新开始比较,直至模式串中每个字符依次与主串中的一个连续的字符序列相等时为止,此时称为匹配成功:如果在主串中不存在与模式串相同的子串,则匹配失败。

3. 字符串转换

3.1 字符串转换成整数

int AToI(char s[])
{int i, n = 0;for (i = 0;s[i]>='0' && s[i]<='9';++i){n = 10 * n  + (s[i] - '0');}return n;
}

3.2 字符计数

void CharCountNum()
{double nc;for (nc = 0; getchar() != EOF; ++nc);printf("%.0f\n", nc);
}

3.3 字符行数计数

void CharColumnCountNum()
{int nC, nL = 0;while ((nC = getchar()) != EOF){if (nC == '\n'){++nL;}}printf("%d\n", nL);
}

3.4 字符单词计数

void WordCountNum()
{int nC;     //输入字符int nCharNum = 0;     //输入字符个数int nL = 0; //记录行数int nN = 0; //记录单词个数bool bState = true;  //一个单词内的字符不计数while ((nC = getchar()) != EOF){++nCharNum;if (nC == '\n'){++nL;}if (nC == ' '|| nC == '\n' || nC == '\t'){bState = true;}else{if (bState){++nN;bState = false;}}}printf("%d %d %d\n", nCharNum, nN, nL);
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词