每天一道LeetCode-----判断给定字符串是否符合某个模式
生活随笔
收集整理的這篇文章主要介紹了
每天一道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-----判断给定字符串是否符合某个模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTTP协议学习笔记(一)请求方法名及状
- 下一篇: C++代码片段(一)萃取函数返回值类型,