C++ 判断是否是子字符串和回文字符串

来源:互联网 发布:上海石油化工交易软件 编辑:程序博客网 时间:2024/06/10 14:30

一、首先我们需要写出判断知否值子字符串的函数

bool isSubstr( string str1 , string str2){if(str1.size()>=str2.size()){string::size_type len = str2.size();for(string::size_type i=0 ; i<str1.size()-len+1 ; i++){string tmpstr = str1.substr(i,len);if(tmpstr==str2)return true;}return false;}return false;}

通过string类的substr来遍历字符串str1得到str2是否是其子字符串。

二、判断一个字符串是否是另一个字符串的Rotation,即abcde和deabc有rotating关系。

思路:我们已经有了isSubstr函数,所以可以考虑 判断 str2是否是str1+str1的值字符串来求解。

bool isRotation( string str1 , string str2 ){if(str1.size()==str2.size() && str1.size()>0){string strsum = str1+str2;return isSubstr(strsum,str2);}return false;}

三、用"%20"替换一个字符串中的空格字符

while(getline(cin,str1)){cout<<"Before transform: "<<str1<<endl;for(string::size_type i=1 ; i<str1.size() ; i++)if(str1[i]==' ')str1.replace(i,1,"%20");cout<<"After transform: "<<str1<<endl;}

注意:cin遇到空格(space)和换行(tab)等会结束输入,所以我们必须用getline函数来得到合格的输入,遇到enter键结束输入。


谢谢,请指教!



原创粉丝点击