CareerCup-1.8

Assume you have a method isSubstring which checks if one word is a substring of another. Given two strings, s1 and s2, write code to check if s2 is a rotation of s1 using only one call to isSubstring (i e , “waterbottle” is a rotation of “erbottlewat”)

这道题没想到这么做,很巧妙

#include <iostream>  
using namespace std;  
  
bool isSubstring(char* src, char* tar)  
{  
    return strstr(src, tar)!=NULL;  
};  
  
bool isRotation(char* src, char* tar)  
{  
    int len = strlen(src);  
    if(len != strlen(tar))  
        return false;  
    char* newSrc = new char[len * 2 + 1];  
    strcpy(newSrc, src);  
    strcpy(newSrc+len, src);  
    return isSubstring(newSrc, tar);  
};  
  
int main()  
{  
    cout<<boolalpha<<isRotation("a1bd12fswfd", "a1bd12fswfd");  
    system("pause");   
}; 

Comments

comments powered by Disqus