NC253. 旋转字符串(二)
描述
示例1
输入:
"abcd","bcda"
输出:
true
示例2
输入:
"abcd","abcd"
输出:
false
C 解法, 执行用时: 2ms, 内存消耗: 388KB, 提交时间: 2021-09-05
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 旋转字符串 * @param A string字符串 * @param B string字符串 * @return bool布尔型 */ char* LeftRotateString(char* str, int n) { int len=strlen(str); char* rt=(char *)malloc(sizeof(char)*len+100); if(len==0) return rt; int i,index=0; for(i=n%len;i<len;i++) { rt[index++]=str[i]; } for(i=0;i<n%len;i++) { rt[index++]=str[i]; } return rt; } bool solve(char* A, char* B ) { int len=strlen(A),i; char *p; for(i=1;i<len;i++) { p=LeftRotateString(B,i); if(strcmp(A,p)==0) return true; } return false; }
C++ 解法, 执行用时: 3ms, 内存消耗: 396KB, 提交时间: 2022-01-14
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 旋转字符串 * @param A string字符串 * @param B string字符串 * @return bool布尔型 */ bool solve(string A, string B) { // write code here int al = A.size(); int bl = B.size(); int flag = 0; if(al!=bl){ return false; }else{ for(int i=0;i<al;i++){ for(int j=0;j<bl;j++){ if(A[i]==B[j]&&i!=j){ int temp = 1; for(int k=1;k<al;k++){ if(A[(i+k)%al]!=B[(j+k)%al]){ temp = 0; break; } } if(temp==1){ flag = 1; } } } } if(flag==1){ return true; }else{ return false; } } } };
C++ 解法, 执行用时: 3ms, 内存消耗: 396KB, 提交时间: 2021-08-27
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 旋转字符串 * @param A string字符串 * @param B string字符串 * @return bool布尔型 */ bool solve(string A, string B) { int Na=A.size(); int Nb=B.size(); if(Na!=Nb){return false;} bool res=false; for(int i=1; i<Na; i++){ string a=A.substr(i); a=a+A.substr(0,i); if(a==B){res=true; break;} } return res; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 400KB, 提交时间: 2021-08-04
class Solution { public: /** * 旋转字符串 * @param A string字符串 * @param B string字符串 * @return bool布尔型 */ bool solve(string A, string B) { int n = A.size(); string c = (A+A).substr(1, n*2-2); return A.size() == B.size() && c.find(B) != string::npos; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 404KB, 提交时间: 2022-07-28
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 旋转字符串 * @param A string字符串 * @param B string字符串 * @return bool布尔型 */ bool solve(string A, string B) { // write code here if(A.size()!=B.size()) { return false; } char ch=B[0]; int pos=A.find(ch); if(pos==0) { pos=A.find(ch,pos+1); } int start=0; while(pos!=A.npos) { string str1=A.substr(0,pos); string str2=A.substr(pos); if(str2+str1==B) { return true; } start=pos+1; pos=A.find(ch,start); } return false; } };