【leetcode】345. Reverse Vowels of a String
2016-06-12 16:36
197 查看
一、题目描述
Write a function that takes a string as input and reverse only the vowels of a string.
Example 1:
Given s = "hello", return "holle".
Example 2:
Given s = "leetcode", return "leotcede".
题目解读:将字符串s中的元音逆置
思路:遍历一遍字符串,用map存储元音和位置,然后设置两个迭代器分别从头和从尾遍历,修改元音位置
c++代码(64ms,4.59%)
其他代码
代码2 (12ms, 73.65%)
Write a function that takes a string as input and reverse only the vowels of a string.
Example 1:
Given s = "hello", return "holle".
Example 2:
Given s = "leetcode", return "leotcede".
题目解读:将字符串s中的元音逆置
思路:遍历一遍字符串,用map存储元音和位置,然后设置两个迭代器分别从头和从尾遍历,修改元音位置
c++代码(64ms,4.59%)
class Solution { public: string reverseVowels(string s) { map<int, char>vowel; int count = 0; for(int i=0; i<s.size(); i++){ if(s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u' || s[i] == 'A' || s[i] == 'E' || s[i] == 'I' || s[i] == 'O' || s[i] == 'U'){ vowel[i] = s[i]; count ++; } } if(count){ map<int, char>::iterator it1; map<int, char>::iterator it2; it1 = vowel.begin(); it2 = vowel.end(); it2--; for(int i= 0;i<count; i++){ s[it1->first] = it2->second; it1++; it2--; } } return s; } };
其他代码
class Solution { public: string reverseVowels(string s) { auto p1 = s.begin(), p2 = s.end() - 1; string vowels = "aeiouAEIOU"; while(p1 < p2) { while((vowels.find(*p1) == string::npos) && (p1 < p2)) p1++; while((vowels.find(*p2) == string::npos) && (p1 < p2)) p2--; if(p1 < p2) swap(*p1, *p2); p1++; p2--; } return s; } };
代码2 (12ms, 73.65%)
class Solution { public: string reverseVowels(string s) { int dict[256] = {0}; dict['a'] = 1, dict['A'] = 1; dict['e'] = 1, dict['E'] = 1; dict['i'] = 1, dict['I'] = 1; dict['o'] = 1, dict['O'] = 1; dict['u'] = 1, dict['U'] = 1; int start = 0, end = (int)s.size() - 1; while(start < end){ while(start < end && dict[s[start]] == 0) start++; while(start < end && dict[s[end]] == 0) end--; swap(s[start],s[end]); start++;end--; } return s; } };
相关文章推荐
- Sencha 引用默认图标
- HTTP原理
- Fresco的缓存机制
- CentOS6.4 配置LVS(DR模式)
- 深入理解C#中new、override、virtual关键字的区别
- springmvc之json格式配置
- linux系统编程之fcntl使用
- 【常用算法思路分析系列】与二分搜索相关高频题
- mysql
- SQLyog 快捷方式
- markdown 测试博客发布
- Myeclipse 2015 stable 1.0 完美破解方法【亲测成功】
- JavaScript中mouseover和mouseout多次触发解决办法
- Win2008 R2 WEB 服务器安全设置指南之修改3389端口与更新补丁
- 【CSS笔记十】CSS样式设置小技巧
- RSA密钥长度、明文长度和密文长度
- 事件
- RGBA-ABGR-RGB666
- Pulling Memory off an Android Device How To!
- Java进阶(三十) 判断字符串编码类型