1. C++中std::getline函数的用法

    std::getline

    2016/09/18 21:23:07 C++

  2. 华为oj之【中级】单词倒排

    题目: 【中级】单词倒排 热度指数:1593时间限制:1秒空间限制:32768K 本题知识点: 字符串 排序 题目描述 对字符串中的所有单词进行倒排。 说明: 1、每个单词是以26个大写或小写英文字母构成; 2、非构成单词的字符均视为单词间隔符; 3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符; 4、每个单词最长20个字母; 输入描述: 输入一行以空格来分隔的句子 输出描述: 输出句子的逆序 输入例子: I am a student 输出例子: student a am I 在线提交网址: http://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836?tpId=37&tqId=21254&rp=&ru=/ta/huawei&qru=/ta/huawei/question-ranking 分析: 先使用getline()进行按行读入到vector中, 将其中的非字母字符赋值为空格, 注意还得将多个连续空格替换为单空格(使用 sstream 库中的 istringstream ), 然后对vector进行反向遍历, 输出即可. 已AC代码: #include<cstdio> #include<iostream> #include<sstream> #include<vector> #include<string> using namespace std; int main() { string str; vector<string> vect; string line; while(getline(cin, line)) { istringstream ss(line); while(ss >> str) { for (int i = 0; i != str.length(); i++) { if (!((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z'))) str[i] = ' '; } istringstream temp(str); // 类似于cin, 以空格为分隔符将原字符串中的子字符串保存 while(temp>>str) { vect.push_back(str); } } for(auto it = vect.rbegin(); it != vect.rend() - 1; ++it) { cout << *it << " "; } cout << vect[0] << endl; vect.clear(); } return 0; }

    2016/09/18 20:15:26 编程训练

  3. 华为oj之字符串分割

    题目: 字符串分隔

    2016/09/18 16:39:32 编程训练

  4. 华为oj之提取不重复的整数

    题目: 提取不重复的整数

    2016/09/18 12:56:52 编程训练

  5. 华为oj之(整型)数字颠倒

    题目: 数字颠倒

    2016/09/18 10:43:12 编程训练

  6. 华为oj之句子逆序

    题目: 句子逆序

    2016/09/18 09:47:26 编程训练

  7. 携程校招2017编程题之股票最大利润

    2016/09/17 21:58:36 编程训练

  8. 华为oj之求解立方根

    题目: 求解立方根

    2016/09/17 16:18:46 编程训练

  9. 华为oj之等差数列前n项和

    题目: 等差数列 热度指数:1010 时间限制:1秒 空间限制:32768K 题目描述 功能: 对于等差数列 2,5,8,11,14… 输入: 正整数N >0 输出: 求等差数列前N项和 返回: 转换成功返回 0 ,非法输入与异常返回-1   输入描述: 输入一个正整数。 输出描述: 输出一个相加后的整数。 输入例子: 2 输出例子: 7 在线提交网址: http://www.nowcoder.com/practice/f792cb014ed0474fb8f53389e7d9c07f?tpId=37&tqId=21323&rp=&ru=/ta/huawei&qru=/ta/huawei/question-ranking 分析: 使用求和公式, a[n] = d*n - a[0], S[n] = (a[1] + a[n])/2, 算一下就可以写出代码了… 已AC代码: #include<cstdio> #include<iostream> using namespace std; int main() { int n; while(cin>>n) { if(n <= 0) return (-1); int sum; sum = n*(3*n+1)/2; cout<<sum<<endl; } return 0; }

    2016/09/17 15:35:11 编程训练

  10. 华为oj之最小公倍数

    题目: 求最小公倍数

    2016/09/17 15:19:26 编程训练