在字符串中查找子字符串的算法
2006-05-19 15:08
253 查看
#include <stdio.h>
int strlen(char *str)
{
int i;
for ( i = 0; str[i] != '/0'; i++ ); /* 用循环计算长度 */
return i;
}
/* ---------------------------------------- */
/* 在字符串中找寻子字符串 */
/* ---------------------------------------- */
int strindex(char *str,char *substr)
{
int end,i,j;
end = strlen(str) - strlen(substr); /* 计算结束位置 */
if ( end > 0 ) /* 子字符串小于字符串 */
{
for ( i = 0; i <= end; i++ )
/* 用循环比较 */
for ( j = i; str[j] == substr[j-i]; j++ )
if ( substr[j-i+1] == '/0' ) /* 子字符串字结束 */
return i + 1; /* 找到了子字符串 */
}
return -1;
}
/* ---------------------------------------- */
/* 主程式: 在字符串中找寻子字符串出现位置. */
/* ---------------------------------------- */
void main()
{
char string[100]; /* 字符串阵列宣告 */
char substring[100]; /* 子字符串阵列宣告 */
int result; /* 找寻结果 */
printf("请输入字符串 ==> ");
gets(string); /* 读取字符串 */
printf("请输入要搜索的子字符串 ==> ");
gets(substring); /* 读取子字符串 */
result = strindex(string,substring); /* 搜寻子字符串 */
if ( result > 0 )
printf("子字符串 %s 位置在 %d/n",substring,result);
else
printf("没有找到子字符串 %s/n",substring);
getchar();
}
int strlen(char *str)
{
int i;
for ( i = 0; str[i] != '/0'; i++ ); /* 用循环计算长度 */
return i;
}
/* ---------------------------------------- */
/* 在字符串中找寻子字符串 */
/* ---------------------------------------- */
int strindex(char *str,char *substr)
{
int end,i,j;
end = strlen(str) - strlen(substr); /* 计算结束位置 */
if ( end > 0 ) /* 子字符串小于字符串 */
{
for ( i = 0; i <= end; i++ )
/* 用循环比较 */
for ( j = i; str[j] == substr[j-i]; j++ )
if ( substr[j-i+1] == '/0' ) /* 子字符串字结束 */
return i + 1; /* 找到了子字符串 */
}
return -1;
}
/* ---------------------------------------- */
/* 主程式: 在字符串中找寻子字符串出现位置. */
/* ---------------------------------------- */
void main()
{
char string[100]; /* 字符串阵列宣告 */
char substring[100]; /* 子字符串阵列宣告 */
int result; /* 找寻结果 */
printf("请输入字符串 ==> ");
gets(string); /* 读取字符串 */
printf("请输入要搜索的子字符串 ==> ");
gets(substring); /* 读取子字符串 */
result = strindex(string,substring); /* 搜寻子字符串 */
if ( result > 0 )
printf("子字符串 %s 位置在 %d/n",substring,result);
else
printf("没有找到子字符串 %s/n",substring);
getchar();
}
相关文章推荐
- 【算法题】查找字符串中无重复最长子串的长度
- 算法1——在一个字符串中查找第一个非重复的字符
- 查找某些字符是否在另一个字符串里出现的高效算法
- 一步一步写算法(之字符串查找 中篇)
- KMP 算法并非字符串查找的优化
- python算法-字符串查找KMP算法
- iOS 算法面试题(打印2-100之间的素数、求两个整数的最大公约数、查找字符串的位置)~demo
- 一步一步写算法(之字符串查找 中篇)
- 一步一步写算法(之字符串查找 上篇)
- ACM经典算法之字符串处理:字符串查找
- 字符串常见算法之一:查找一个短串在一个长串中位置
- 给一个字符串S和一个字符串数组T(T中的字符串要比S短许多),设计一个算法, 在字符串S中查找T中的字符串
- 一步一步写算法(之字符串查找 下篇)
- 面试:字符串集合 查找包含算法 的素数方案
- 一个非常经典的算法查找字符串中每个字符的个数。
- 算法一枚:查找字符串中最长的对称子字符串
- 设计一个程序,从键盘上输入若干字符串,利用算法库中的查找函数对给定的字符串进行查找,将查找后的结果输出
- 一步一步写算法(之字符串查找 下篇)
- 从面试题中学算法(1)--哈希表查找字符串中第一次仅出现一次的字母
- 【算法学习】KMP查找匹配字符串