/*
* 设计一个算法,在字符串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;
}
分享到:
相关推荐
数据结构,BF算法,替换字符,查找字符,利用BF算法,一个一个回溯进行比较!~
本题要求实现一个字符串查找的简单函数。 函数接口定义: char *search( char *s, char *t ); 函数search在字符串s中查找子串t,返回子串t在s中的首地址。若未找到,则返回NULL
设在字符串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)、写出完整...
1、给你一个字符串s,一个字符串t.返回返回s中覆盖t所有字符串的最小子串,如果s中不存在涵盖t所有字符的子串,则返回'' 2、如果s中存在这样的子串,需保证其唯一且不重复,若没有则返回''
1 查找子串T在主串S中所有出现的位置 2 将主串S中第一次出现的子串T替换为串T1 3 删除串S中第pos个字符起长度为len的子串
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)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。 <br>列目录时, dir *....
3、若S和T是用结点大小为1的单链表存储的两个串,设计算法将S中首次与T匹配的子串逆置。 要求:熟练掌握串的顺序和链接存储结构的实现方法;熟练掌握在两种存储结构上实现串的各种运算。 树的应用 时数 2 性质 验证...
有一种特殊的字符串称为raw字符串,被认为是纯文本,其中的\和{等不具有特殊含义,该类字符串在引号前面加r,下面是一个例子: ${r"/${data}"year""}屏幕输出结果为:/${data}"year" 转义 含义 ...
内容及步骤: 1、 设有一个线性表(e0,e1,e2,e3,…,en-2,en-1)存放在一个一维数组A[arraySize]中的前n个数组元素位置。请编写一个函数将这个线性表原地逆置,即将数组的前n个原地址内容置换为(en-1,en-2,…,e3,...
写一个函数,给你一个字符串 倒序输出来 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 = ...
2 8 字符串的最长回文子串:Manacher 算法 42 第 3 章 序列 44 3 1 网格中的最短路径 44 3 2 编辑距离(列文斯登距离45 3 3 最长公共子序列 47 3 4 升序最长子序列 49 3 5 两位玩家游戏中的必胜策略 52 第 4 章 数组...
3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 add...
3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 add...
3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 ...
1.3.6. 在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b 52 1.3.7. n 个数字(0,1,…,n-1)形成一个圆圈 .................................................. 53 1.3.8. 定义 Fibonacci ...