一、首先我们需要写出判断知否值子字符串的函数
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键结束输入。
谢谢,请指教!