Word Pattern
来源:互联网 发布:系统升级软件 编辑:程序博客网 时间:2024/04/29 18:44
Word Pattern:
和之前的一篇博文一样,这道题主要是找双向映射关系,映射关系不对的就返回false。做这道题的时候在处理空格分隔的字符串上浪费了很多时间,在网上找到了一种很好地处理方法。(PS,处理字符串的循环用size()和i去遍历效果比迭代器遍历好一些)
class Solution {public: bool wordPattern(string pattern, string str) { vector<string> dic; istringstream sin(str); string tmp; while (sin >> tmp) dic.push_back(tmp); if (dic.size() != pattern.size()) return false; unordered_map<char, string> mp1; unordered_map<string, char> mp2; for (int i = 0; i < pattern.size(); ++i) { if (mp1.find(pattern[i]) == mp1.end()) { mp1[pattern[i]] = dic[i]; } else if (mp1[pattern[i]] != dic[i]) { return false; } if (mp2.find(dic[i]) == mp2.end()) { mp2[dic[i]] = pattern[i]; } else if (mp2[dic[i]] != pattern[i]) { return false; } } return true; }};istringstream对象可以绑定一行字符串,然后以空格为分隔符把该行分隔开来。同时我又想到如果字符串是用其他符号分隔的怎么办 ,于是在网上找到了下面的方法:
int main() { int length ; string st="Enter,the,name,of,an,existing,text,file:"; istringstream stream(st); int i=0; char array[20]={0}; while(stream.get(array,20,',')) { length = stream.tellg(); cout<<array<<endl; stream.seekg (length+1, ios::beg); } system("pause");return 0;}
但是我强迫症又犯了,静态数组看着好不舒服,所以想用vector.push_back(),然而stream.get的参数是string*,还是老实用数组吧。
0 0
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- word pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Android中Button,EditText获取焦点后点击事件的触发
- join连接的五种方式的简单使用案例(Inner join,Left join,Right join,Full join,Cross join)
- Java界面开发——登录并对用户身份进行验证
- 将输入流读取成String后返回
- java基础之网络编程
- Word Pattern
- I00021 有负数项的数列之和
- java打字母的小游戏
- 生日快乐
- ubuntu查看系统资源占用(内存,cpu和进程)
- Android学习中出现的错误以及解决
- bootstrap alert提示框的bug
- 服务的升级和降级
- 软链接和硬链接详解