Parts of a list -- 7 Kyu

原题

http://www.codewars.com/kata/parts-of-a-list/train/cpp

题目

Write a function Partlist that gives all the ways to divide a list (an array) of at least two elements into two non-empty parts.

编写函数Partlist,把给定的列表(数组)分成两个非空字符串构成的列表(数组)

输入:a = {"az", "toto", "picaro", "zone", "kiwi"}
输出:{{"az", "toto picaro zone kiwi"}, {"az toto", "picaro zone kiwi"}, {"az toto picaro", "zone kiwi"}, {"az toto picaro zone", "kiwi"}}

分析

解决本问题的主要思路是:遍历+字符串连接。

参考答案

#include <iostream>
#include <vector>
#include <sstream>
#include <iterator>

using namespace std;

vector<pair<string, string>> Partlist(vector<string> const&arr){
    vector<pair<string, string>> res;
    for(size_t i=0;i<arr.size()-1;i++){
        // 第一个字符串
        ostringstream first_oss;
        copy(begin(arr),begin(arr)+i+1,ostream_iterator<string>(first_oss," "));
        string first = first_oss.str();
        first.pop_back();// 除去字符串最后一个空格

        // 第二个字符串
        ostringstream second_oss;
        copy(begin(arr)+i+1,end(arr),ostream_iterator<string>(second_oss," "));
        string second = second_oss.str();
        second.pop_back();// 除去字符串最后一个空格
        res.push_back(make_pair(first,second));
    }
    return res;
};

说明

  1. 使用copyostream_iterator可以实现字符串数组连接,这是C++的惯用法。
  2. 使用字符串的pop_back(),可以清除字符串连接导致的最后一个多余的空格。(c++11)

其它

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,779评论 0 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • FreeCodeCamp - Basic JavaScript 写在前面: 我曾经在进谷前刷过这一套题,不过当时只...
    付林恒阅读 16,534评论 5 28
  • 冬季忘了初衷 热情了自己的冰冷 暖了自己的心情 于是世界少了 雪飘冰封 冬的背叛 让雪花也想辜负冬 用自己的晶莹 ...
    微雨凭栏阅读 618评论 9 10
  • 当一个人恋爱时,应该会回味单身的美好。 一个人过着独处的生活,冰箱坏了自己修,生病了自己喝水吃药。下班回家,做菜煮...
    第三种_失去阅读 181评论 0 0