字串移位包含的問題——解題筆記
字串移位包含的問題——解題筆記
題目描述:給定兩個字串s1和s2,要求判定s2時候能夠被s1做迴圈移位(rotate)得到的字串包含。例如,給定s1=AABCD和s2=CDAA,返回true;給定s1=ABCD和s2=ACBD,返回false。
solution 1: 直接的方法,把串s1遍歷所有移位之後的情況,每種情況都判斷一遍時候包含s2.
分析:這種情況在s1串很長的情況不好,需要遍歷的情況太多。
solution 2:注意到s1串移位之後會出現迴圈的情況,而迴圈也就是s1串的重複放置,也就是說ABCD在迴圈移位之後變成了ABCDABCD,我們直接看這個移位之後的字串時候包含s2即可。程式碼如下:
#include<iostream>
#include<string>
using namespace std;
bool rotateContain(string str1, string str2)
{
str1 += str1;
if(str1.find(str2) != string::npos)
return true;
else
return false;
}
int main()
{
string str1 = "AABCD";
//string str1 = "BACDA";
string str2 = "CDAA";
cout<<rotateContain(str1, str2)<<endl;
return 0;
}
參考文獻:
《程式設計之美》
相關文章
- 19:字串移位包含問題字串
- 字串做題筆記字串筆記
- 題解筆記筆記
- python待解決問題筆記Python筆記
- 字串問題字串
- Windows 筆記本 WiFi 功能消失問題解決Windows筆記WiFi
- 分割字串問題字串
- 字串匹配問題字串匹配
- 字串排序問題字串排序
- IFrame跨域問題筆記跨域筆記
- 字串編輯距離問題詳解字串
- SecureFX安裝問題(包含SecureCRT)Securecrt
- 陣列分割——解題筆記陣列筆記
- 字串匹配模式問題字串匹配模式
- 字串轉數字的問題字串
- 配置Mysql Group Replication遇到的問題筆記MySql筆記
- 《扶蘇的問題》題解
- 《金子塔原理》讀書筆記之解決問題的邏輯筆記
- 解決split無法得到空字串問題字串
- 使用主題檔案(包含CSS檔案)時遇到的問題CSS
- 用筆記來記錄遇到的問題:釋出版本和非釋出版本遇到的問題筆記
- Hbase學習筆記問題總結筆記
- libigl庫的學習筆記--問題與解決辦法筆記
- 字串排列組合問題字串
- 字串位元組數問題字串
- 字串混淆常見問題字串
- 強化學習-學習筆記11 | 解決高估問題強化學習筆記
- 字串的encode與decode解決亂碼問題字串
- 解決字串連線設定間隔符的問題字串
- New的幾個問題 詳解 --讀你必須知道的.NET筆記筆記
- 第三章:查詢與排序(下)----------- 3.29 題解:判斷陣列的包含問題排序陣列
- 解決「問題」,不要解決問題
- 第五章 字串專題 ---------------- 5.5 題解:壓縮字串字串
- Vue.js筆試題解決業務中常見問題Vue.js筆試
- 解決golang 的記憶體碎片問題Golang記憶體
- 記錄recyclerview的閃退問題解決View
- 記錄@EnumValue註解不生效的問題
- 學習本站Laravel教程中遇到的問題筆記Laravel筆記