`
liukexiong
  • 浏览: 83752 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

在字符串s中查找子串t最后一次出现的位置

阅读更多
/*
 * 设计一个算法,在字符串s中查找子串t最后一次出现的位置
 */
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int lastindexof(char *s,char *t)
{
	char *s1=s;
	char *t1=t;
	int n1=strlen(s1);
	int n2=strlen(t1);
	int i=0;
	int j=0;
	//找到:true 没找到:false
	bool find=false;
	int loc=0;
	while(i<n1&&j<n2)
	{
		//存在继续比较的意义
		if(*(s1+i)==*(t1+j))
		{
			char *s2=s1+i+1;
			char *t2=t1+j+1;
			while(*s2!='\0'&&*t2!='\0')
			{
				if(*s2==*t2)
				{
					s2++;
					t2++;
				}
				else
				{
					break;
				}
			}
			//找到
			if(*t2=='\0')
			{
				find=true;
				loc=i;
			}
			i++;
		}
		//不存在继续比较的意义s
		else
		{
			i++;
		}
	}
	if(find)return loc;
	else return -1;
}

int main()
{
	char *s="cdababcefabc";
	char *t="abc";
	int loc=lastindexof(s,t);
	printf("最后一次出现的位置:%d\n",loc);
	return 0;
}

 

0
0
分享到:
评论

相关推荐

    BF算法查找字符串中字符

    数据结构,BF算法,替换字符,查找字符,利用BF算法,一个一个回溯进行比较!~

    Untitled1.cpp

    本题要求实现一个字符串查找的简单函数。 函数接口定义: char *search( char *s, char *t ); 函数search在字符串s中查找子串t,返回子串t在s中的首地址。若未找到,则返回NULL

    c语言数据结构字符串模式匹配算法.zip

    设在字符串S中查找模式串T,若S[m]!=T[n],那么,取T[n]的模式函数值next[n], 1. next[n]= -1 表示S[m]和T[0]间接比较过了,不相等,下一次比较 S[m+1] 和T[0] 2. next[n]=0 表示比较过程中产生了不相等,下一次比较 ...

    算法实验+算法实验指导书+源码

    给定两个字符串S和T,用BF算法,在主串S中查找字串T,输出结果,输出时要求有文字说明。请编写程序。 三、实验要求 (1)、熟悉C++编译环境的基本操作 (2)、考虑各种可能的情况(匹配成功或不成功) (3)、写出完整...

    练习SCL写函数块处对字符串进行处理,查找一个字符串内涵盖另一个字符串所有字符的最小的字符串

    1、给你一个字符串s,一个字符串t.返回返回s中覆盖t所有字符串的最小子串,如果s中不存在涵盖t所有字符的子串,则返回'' 2、如果s中存在这样的子串,需保证其唯一且不重复,若没有则返回''

    数据结构 串操作(C语言)

    1 查找子串T在主串S中所有出现的位置 2 将主串S中第一次出现的子串T替换为串T1 3 删除串S中第pos个字符起长度为len的子串

    c语言串的操作可实现插入、查找、以及求子串功能

    1.在主串s中第i个位置之前插入一个子串t\n\t2.在主串s中从第i个位置开始共取m个字符,求子串t\n\t3.求子串t在主串s中的起始位置t\n\t4.退出程序\

    正则表达式

    (ab|cd) + |ef) / 匹配的既可以是字符串 "ef",也可以是字符串"ab" 或者 "cd" 的一次或多次重复. 在正则表达式中,括号的第二个用途是在完整的模式中定义子模式。当一个正则表达式成功地和目标字符串相匹配时,可以从...

    正则表达式教程

    正则表达式教程  正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。 &lt;br&gt;列目录时, dir *....

    《数据结构》实验

    3、若S和T是用结点大小为1的单链表存储的两个串,设计算法将S中首次与T匹配的子串逆置。 要求:熟练掌握串的顺序和链接存储结构的实现方法;熟练掌握在两种存储结构上实现串的各种运算。 树的应用 时数 2 性质 验证...

    freemarker总结

    有一种特殊的字符串称为raw字符串,被认为是纯文本,其中的\和{等不具有特殊含义,该类字符串在引号前面加r,下面是一个例子: ${r"/${data}"year""}屏幕输出结果为:/${data}"year" 转义 含义 ...

    数据结构(C++)有关练习题

    内容及步骤: 1、 设有一个线性表(e0,e1,e2,e3,…,en-2,en-1)存放在一个一维数组A[arraySize]中的前n个数组元素位置。请编写一个函数将这个线性表原地逆置,即将数组的前n个原地址内容置换为(en-1,en-2,…,e3,...

    最新JAVA编程题全集_50题及答案

    写一个函数,给你一个字符串 倒序输出来 public String getString(String str){ if(str!=null){ String newStr = ""; for(int i=0;i();i++) { char c = str.charAt(str.length()-1-i); newStr = ...

    高效算法:竞赛、应试与提高必修128例.[法] Christoph Dürr Jill-Jênn Vie(带书签文字版).pdf

    2 8 字符串的最长回文子串:Manacher 算法 42 第 3 章 序列 44 3 1 网格中的最短路径 44 3 2 编辑距离(列文斯登距离45 3 3 最长公共子序列 47 3 4 升序最长子序列 49 3 5 两位玩家游戏中的必胜策略 52 第 4 章 数组...

    sql经典语句一部分

    3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 add...

    经典SQL语句大全

    3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 add...

    数据库操作语句大全(sql)

    3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 ...

    世界500强面试题.pdf

    1.3.6. 在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b 52 1.3.7. n 个数字(0,1,…,n-1)形成一个圆圈 .................................................. 53 1.3.8. 定义 Fibonacci ...

Global site tag (gtag.js) - Google Analytics