日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

每天一道LeetCode-----判断给定字符串是否符合某个模式

發布時間:2024/4/19 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每天一道LeetCode-----判断给定字符串是否符合某个模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Isomorphic Strings

原題鏈接Isomorphic Strings

給定兩個字符串,判斷其中一個是否能轉換成另一個,轉換規則如下

  • 必須是一對一
  • 同一個字符兩次轉換必須相同,如果第一次字符’a’轉換成’b’,那么當下次遇到’a’時,它就只能轉換成’b’
  • 不能有兩個字符轉換成相同字符,如果第一次’a’轉換成’b’,那么之后其它的字符都不能再轉換成’b’

思路:

通過兩個數組記錄轉換規則,直到轉換完成

代碼如下

class Solution { public:bool isIsomorphic(string s, string t) {vector<int> nums(256, 0);vector<int> count(256, 0);for(int i = 0; i < s.size(); ++i) {/* 之前沒有轉換過,記錄轉換規則 */if(nums[s[i]] == 0 && count[t[i]] == 0) {nums[s[i]] = t[i];count[t[i]] = 1;}/* 當nums[s[i]] == t[i]時正確,否則返回false */else if(nums[s[i]] != t[i]) {return false;}}return true;} };

Word Pattern

原題鏈接Word Pattern

判斷一個字符串中的單次是否按照給定模式排列

思路:

仍然是一對一的關系,和上面的類似

代碼如下

class Solution { public:bool wordPattern(string pattern, string str) {unordered_map<char, string> hash;unordered_map<string, int> count;std::istringstream oss(str);std::string line;for(auto ch : pattern) {std::getline(oss, line, ' ');if(hash.count(ch) == 0 && count.count(line) == 0) {hash[ch] = line;count[line] = 1;}else if(hash[ch] != line) {return false;}}return std::getline(oss, line) ? false : true;} };

總結

以上是生活随笔為你收集整理的每天一道LeetCode-----判断给定字符串是否符合某个模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。