七日算法先导(七)——字符串
相关概念
字符串:由零个或多个字符组成的有限序列。
子串:一个串中任意个连续字符组成的子序列(含空串)称为该串的子串。真子串是不包含自身的所有子串。
主串:包含子串的串相应的称为主串
字符位置:字符在序列中的序号为该字符在串中的位置
子串位置:子串第一个字符在主串中的位置
空格串:由一个或多个空格组成的串(与空串不同)
串相等:当且仅当两个串的长度相等并对应位置上的字符都相等时,这两个串才是相等的。所有空串是相等的。
回文串
字符串的基本概念上面俩篇文章都讲的很清楚了,其中还有一个回文串,我们现在来看一下:
<font color = red>回文串:一串正着读和反着读都是一样的一种特殊字符串
俩个方法:
直接函数反转
中心拓展方法
函数反转
对于每个语言函数 api 可能不同,我们统称为 reverse 函数
我们输入的字符串类型定位 string 型,然后使用 reverse 函数就可以,然后我们直接比较 str1 与 str2 是否相等,相等的话那么就表示输入的字符串为回文串。
reverse(str2.begin(), str2.end());
假设,题目中禁止了反转函数那么我们可以手写一个函数,也是比较容易实现的:
复制代码
俩边向中心靠拢
比如对一个字符串 ababa,选择 left = 0,和 right = n-1,如果俩个相等,则 left++,right--当 left 与 right 俩个所指的数不等,则不是回文,直接退出,反之,left == right 时候,就是回文串
复制代码
刷题巩固
版权声明: 本文为 InfoQ 作者【秋名山码民】的原创文章。
原文链接:【http://xie.infoq.cn/article/75a996405542c9c386a4aebbf】。文章转载请联系作者。
评论