【OJ】亚信2017校招编程题

【题目】string的全排列

【思路】用交换法产生全排列,因为是全排列,所以时间复杂度是阶乘

【代码】

#include<iostream>
#include<string>
#include<vector> 

using namespace std;
vector<string> combine(const string& data) {
        vector<string> ans;
        ans.push_back(data);
        int len = data.length();
        
        for(int i=0;i<=len-2;i++)
        {
            int listnum = ans.size();
            vector<string> anstemp;
            for(int k=0;k < listnum;k++)
            {
                for(int j=i+1;j<=len-1;j++)
                {
                    string temp = ans[k];
                    char ch  = temp[i];
                    temp[i] = temp[j];
                    temp[j] = ch;
                    anstemp.push_back(temp);
                }
            }
            
            ans.insert(ans.end(),anstemp.begin(),anstemp.end());
        }
        return ans;
    }

int main()
{
    vector<string> test;
    test = combine("abc");
    
    cout<<test.size()<<endl;
    /*for(int i=0;i<test.size();i++)
    {
        cout<<test[i]<<endl;
    }*/
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,593评论 25 709
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,792评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,839评论 18 399
  • 我要把你的故事写成小说,让你读出诗的深情。 高中毕业之前,我在暗恋你。 大学毕业之后,我向你告白。 现在,淋湿了画...
    赖子萌阅读 265评论 2 2
  • 【阳光男孩 张文哲 11月13日 星期一 晴 坚持原创分享第15天】 今天我和妈妈一起去逛超市,我们一进...
    张文哲阅读 257评论 6 0