字符串s1=“AABCD”
字符串s2=“CDAA”
看是s2属于S1移位后的一个子串
一种方法是:直接计算,每次移位,然后在s2移位后的结果中查找
还有一种方法是:s1+s1=AABCD AABCD
计算s2是否是s1+s1的子串
C的一个函数strstr
strstr
语法:
#include <string.h> char *strstr( const char *str1, const char *str2 ); |
功能:函数返回一个指针,它指向字符串str2 首次出现于字符串str1中的位置,如果没有找到,返回NULL。
C++的string的一个函数,将string类型转化为c的字符串数组
c_str
语法:
const char *c_str(); |
c_str()函数返回一个指向正规C字符串的指针, 内容与本字符串相同.
这里的返回的指针是一个const型指针,不能赋值给非const的指针
1 #include<iostream> 2 #include<string.h> 3 #include<string> 4 using namespace std; 5 6 int move(string str1,string str2) 7 { 8 string str=str1+str1; 9 const char* s1=str.c_str(); 10 const char* s2=str2.c_str(); 11 12 if(strstr(s1,s2)) 13 return 1; 14 else 15 return 0; 16 } 17 int main() 18 { 19 string s1("AABCD"); 20 string s2("CDAA"); 21 cout<<move(s1,s2)<<endl; 22 }
时间: 2024-11-09 04:32:25