比較兩個字串的連線模式是否相同
題目要求是,輸入兩個字串,s和t,比較倆個字串的連線模式是否相同。其中字串連線模式可以定義為,字串中字元的出現規律。
例如:
feed 和 goot,其中ee和oo出現位置相同,所以其拼接模式相同;
paper和title,paper中的p和titile中的t出現位置相同;
newspaper和 dog,字串長度相同,所以拼接模式不可能相同;
zoo和aac, oo連續出現在位置2和3,但在aac中卻沒有對應相同的字元出現,所以其模式不同.
要求實現函式bool fun(const string & s, const string & t);
解答:可以通過對映來實現,程式碼如下:
bool fun(const string & s, const string & t)
{
if (s.size() != t.size())return false;
int mp[300] = { 0 };
for (int i = 0;i < t.size(); ++i)
{
if (!mp[s[i]])mp[s[i]] = t[i];
else if (mp[s[i]] != t[i])return false;
}
return true;
}