反转字符串的单词
2016-04-20 16:31
211 查看
对于一个给定的字符串,我们需要在线性(也就是O(n))的时间里对它做一些变形。首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把着个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。比如"Hello World"变形后就变成了"wORLD hELLO"。
输入描述:
输出描述:
输入例子:
输出例子:
输入描述:
给定一个字符串s以及它的长度n(1≤n≤500)
输出描述:
请返回变形后的字符串。题目保证给定的字符串均由大小写字母和空格构成。
输入例子:
"This is a sample",16
输出例子:
"SAMPLE A IS tHIS"
#include <string> #include <iostream> using namespace std; string reverse(string s, int begin, int end) { if (s == "" || end <= 0) return s; for (int i = begin; i<(begin+end+1) / 2; ++i) { char temp; temp = s[i]; s[i] = s[end - i + begin]; s[end - i + begin] = temp; } return s; } int main(void) { string s = ""; char kong = ' '; int n = 0; while (getline(cin, s)) { n = s.size(); cout << "n=" << n << endl; int begin = 0; int end = n - 1; s = reverse(s, begin, end); //cout << s<<endl; end = 0; while (end < n - 1) { end++; if (s[end] != kong) continue; else { end--; s = reverse(s, begin, end); end += 2; begin = end; while (s[end] == kong) { begin++; end++; } } } s = reverse(s, begin, end); // cout << s << endl; for (int i = 0; i < s.size(); i++) { if (s[i] >= 'a'&& s[i] <= 'z') s[i] -= 'a' - 'A'; else if (s[i] >= 'A'&& s[i] <= 'Z') s[i] += 'a' - 'A'; else {} } cout << s << endl; } }
相关文章推荐
- opencv的安装(适用于任何版本的visual studio)
- 用meta标签让网页用360打开时默认为极速模式
- tried to access method android.support.v4.net.ConnectivityManagerCompat.<init>
- Linux进程间通信:共享内存
- 热身赛-ZZULIOJ-1871-NO offer
- 点击图片就可以完成上传功能
- WEB前端开发人员须知的常见浏览器兼容问题及解决技巧
- Linux下gcc 优化等级的介绍
- python3.4+django1.9+mysql5.6环境之hello world
- 探索scrollView的实现*复用
- win8.1+vs2013环境编译tiff-3.8.2
- C++11 语法 struct : bar{} foo{}
- Spring 注解 javax.annotation.Resource和@Autowired
- Object 源码分析
- 升级10.11后使用CocoaPod出现-bash: pod: command not found 解决办法
- 用户场景描述
- Zookeeper安装部署
- mysql修改列的类型
- Spring整合CXF,发布RSETful 风格WebService
- JSTL(fn函数)