字符串查找程序

/*
  这是一个字符串查找程序
  改编自《算法:c语言实现》P64
  增加了一个对连续字符的检测的判别
  例如查找aaa
  但是你输入的是aaaa,其实只有一个aaa
*/
#include "stdio.h"
#include "stdlib.h"
#include "time.h"

#define N 10000

int main(int argc, char *argv[])
{
	int i,j,t,temp[N],*ti=temp;
	char a[N], *p = argv[1];

	for (i = 0; i < N; ++i)
	{
		temp[i]=-1;
	}

	for ( i = 0; i < N-1; a[i] = t, i++)
	{
		if ((t = getchar()) == '.' )
		{
			break;
		}
	}
	a[i] = 0;
	printf("%s\n",a);

	for ( i = 0; a[i] != 0; i++)
	{
		for ( j = 0; p[j] != 0; j++)
		{
			if (a[i+j] != p[j] )
			{
				break;
			}
		}
		if (p[j] == 0 )
		{
			*(ti++) = i;
		}
	}
<span style="white-space:pre">	</span>//对连续字符检测部分
	ti = temp;
	int times =0 ;
	for (; *ti != -1; ti++)
	{
		if (*ti-*(ti-1) ==1)
		{
			if (times <3)
			{
				times++;
			}
			else
			{
				printf("%d ", *ti);
				times = 1;
			}
		}
		else
		{
			printf("%d ", *ti);
		}

	}
	return 0;
}

字符串查找程序,布布扣,bubuko.com

时间: 2024-12-16 10:00:30

字符串查找程序的相关文章

lintcode 容易题:strStr 字符串查找

题目: 字符串查找 字符串查找(又称查找子字符串),是字符串操作中一个很有用的函数.你的任务是实现这个函数. 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始). 如果不存在,则返回 -1. 样例 如果 source = "source" 和 target = "target",返回 -1. 如果 source = "abcdabcdefg" 和

通用固定长度编码格式的字符串查找算法的实现

通用固定长度编码格式的字符串查找算法的实现 字符串的查找是数据库应用中必不可少的操作,而且每种数据库产品(ORACLE.DB2.SYBASE.MS SQL SERVER.MYSQL等等)也都提供了对应的字符串处理函数,比如DB2的LOCATE函数. 但在实际的工作中,还是会遇到一些特殊情况的处理,这使得直接使用字符串查找函数,得到的结果可能是错误的,比如本文中提到的固定长度编码格式的字符串的查找.值得注意的是,本文提出的算法可以稍加修改即移植到其它关系数据库系统或者前端开发工具中. 在实际数据库

有意思的字符串查找函数

通过一段时间对字符串的了解,我发现了许多有意思的字符串函数,下面我们就以常见的字符串查找函数:strchr,strrchr,strstr,strrstr为例来模拟实现这些有意思的字符串查找函数. [strchr][strrchr] 查找一个字符,有所不同的是:strchr用于查找这个字符第一次出现的位置,strrchr用于查找这个字符最后一次出现的位置.下面我们就来打开MSDN来查找这两个字符查找函数的函数原型: char *strchr(const char *string,int c) ch

leetcode | Implement strStr() | 实现字符串查找函数

Implement strStr() : https://leetcode.com/problems/implement-strstr/ Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 如:haystack = "bcbcda"; needle = "bcd" 则 return 2 解析:字符串查找函数,

Python中字符串查找效率比较

Python中字符串查找方式有多种,常见的有re.match/search or str.find 用一个例子来说明各种方式的效率如下: from timeit import timeit import re def find(string, text): if string.find(text) > -1: pass def re_find(string, text): if re.match(text, string): pass def best_find(string, text): i

字符串查找(二分和快排的运用)

Description 现在给你一个字典,再给出几个字符串,让你查找,这些字符串是否在其中. Input 第一行是两个整数M,N分别表示字典数和字符串数. 第2至第M+1行,每一行是一个字典. 第M+2至第M+2+N行是徐查找的字符串. (n<=10,0000, m<=20,0000, 字符串长度不超过10,且均为小写字母) Output 共N行,每行表示第i个字符串在不在字典中,用0表示不在,1表示在. Sample Input 5 3 acc cat multiply do will ac

c#中的字符串查找函数

indexOf()方法,查找某字符串在一个字符串内的位置,没有则返回-1string aa="abcdef";int a=aa.indexOf("bc");//a会等于1int b=aa.indexOf("a");//b会等于0int c=aa.indexOf("g");c会等于-1所以你只要判断返回出来的int值是不是小于0就知道这个字符串里有没有包含指定的另一个字符串 c#中的字符串查找函数,布布扣,bubuko.com

VS2005(vs2008,vs2010)使用map文件查找程序崩溃原因

VS 2005使用map文件查找程序崩溃原因 一般程序崩溃可以通过debug,找到程序在那一行代码崩溃了,最近编一个多线程的程序,都不知道在那发生错误,多线程并发,又不好单行调试,终于找到一个比较好的方法来找原因,通过生成map文件,由于2005取消map文件生成行号信息(vc6.0下是可以生成行号信息的,不知道microsoft怎么想的,在2005上取消了),只能定位在那个函数发生崩溃.这里可以通过生成cod文件,即机器码这一文件,具体定位在那一行崩溃. 首先配置vc2005生成map文件和c

Rabin-Karp指纹字符串查找算法

首先计算模式字符串的散列函数, 如果找到一个和模式字符串散列值相同的子字符串, 那么继续验证两者是否匹配. 这个过程等价于将模式保存在一个散列表中, 然后在文本中的所有子字符串查找. 但不需要为散列表预留任何空间, 因为它只有一个元素. 基本思想 长度为M的字符串对应着一个R进制的M位数, 为了用一张大小为Q的散列表来保存这种类型的键, 需要一个能够将R进制的M位数转化为一个0到Q-1之间的int值散列函数, 这里可以用除留取余法. 举个例子, 需要在文本 3 1 4 1 5 9 2 6 5 3