串(string)是由零个或多个字符组成的有限序列,又名叫字符串。

一些简单的概念:

空格串,是包含空格的串。它与空串的区别就是空格串是有内容有长度的,而且可以不止一个空格。

子串与主串,串中任意个数的连续字符组成的子序列称为该串的子串,包含子串的串称为主串。

子串在主串中的位置就是子串的第一个字符在主串中的序号。

//Index的实现算法
//T为非空串,若主串S中第pos个字符之后存在与T相等的子串,则返回第一个这样的子串在S中的位置,否则返回0.
int Index(String S,String T,int pos)
{
int n,m,i;
String sub;
if(pos>0)
{
n=StrLength(S);//得到主串S的长度
m=StrLength(T);//得到子串T的长度
i=pos;
while(i<=n-m+1)
{
SubString(sub,S,i,m);//取主串第i个位置,长度与T相等子串给sub
if(StrCompare(sub,T)!=0)//如果两串不相等
++i;
else
return i;//如果两串相等,则返回i值
}
}
return 0;//若无子串与T相等,返回0
}

串有顺序存储结构与链式存储结构,顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列。按照预定义的大小 ,为每个定义的串变量分配一个固定长度的存储区。

//用基本数据来实现上面的算法 
//返回子串T在主串S中第pos个字符之后的位置,若不存在,则函数返回值为0
//T非空,1<=pos<=StrLength(S)
//主串S和要匹配的子串T的长度存在S[0]与T[0]中
int Index(String S,String T,int pos)
{
int i=pos;//i用于主串S中当前位置下标,若pos不为1,则从pos位置开始匹配
int j=1;//j用于子串T中当前位置下标值
while(i<=S[0]&&j<=T[0])
{
if(S[i]==T[j])//两字母相等则继续
{
++i;
++j;
}
else //指针后退重新开始匹配
{
i=i-j+2;//i退回到上次匹配首位的下一位
j=1;
}
}
if(j>T[0])
return i-T[0];
else
return 0;
}




转载于:https://www.cnblogs.com/hxxy2003/archive/2011/10/26/2224918.html

内容概要:本文深入探讨了Kotlin语言在函数式编程和跨平台开发方面的特性和优势,结合详细的代码案例,展示了Kotlin的核心技巧和应用场景。文章首先介绍了高阶函数和Lambda表达式的使用,解释了它们如何简化集合操作和回调函数处理。接着,详细讲解了Kotlin Multiplatform(KMP)的实现方式,包括共享模块的创建和平台特定模块的配置,展示了如何通过共享业务逻辑代码提高开发效率。最后,文章总结了Kotlin在Android开发、跨平台移动开发、后端开发和Web开发中的应用场景,并展望了其未来发展趋势,指出Kotlin将继续在函数式编程和跨平台开发领域不断完善和发展。; 适合人群:对函数式编程和跨平台开发感兴趣的开发者,尤其是有一定编程基础的Kotlin初学者和中级开发者。; 使用场景及目标:①理解Kotlin中高阶函数和Lambda表达式的使用方法及其在实际开发中的应用场景;②掌握Kotlin Multiplatform的实现方式,能够在多个平台上共享业务逻辑代码,提高开发效率;③了解Kotlin在不同开发领域的应用场景,为选择合适的技术栈提供参考。; 其他说明:本文不仅提供了理论知识,还结合了大量代码案例,帮助读者更好地理解和实践Kotlin的函数式编程特性和跨平台开发能力。建议读者在学习过程中动手实践代码案例,以加深理解和掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值