zoukankan      html  css  js  c++  java
  • 找出字符串的组合

    比如:“abc”字符串的组合为:a,b,c,ab,ac,bc,abc。

    这里我用两种方法实现:

    位操作:

    #include<iostream>
    #include<vector>
    using namespace std;
    
    //位操作算法
    void main()
    {
    	char* data="abcd";
    	int length=strlen(data);
    	int last=(1<<length)-1;
    	cout<<last<<endl;
    	
    	int i;
    	for(i=1;i<=last;i++)
    	{
    		int currentIndex=length-1;
    		while(currentIndex>=0)
    		{
    			if(i&(1<<currentIndex))
    			{
    				cout<<data[length-currentIndex-1];				
    			}
    			--currentIndex;
    		}
    		cout<<endl;
    	}
    }


    递归操作:

    void algorithm(char* data,int num,vector<char>& result)
    {
    	if(!num)
    	{
    		vector<char>::iterator it=result.begin();
    		for(it;it!=result.end();++it)
    		{
    			cout<<*it;
    		}
    		cout<<endl;
    		return;
    	}
    	if(*data=='')
    		return;
    	result.push_back(*data);
    	algorithm(data+1,num-1,result);
    	result.pop_back();
    	algorithm(data+1,num,result);
    }
    
    void main()
    {
    	char* data="abcd";
    	int length=strlen(data);
    	vector<char> result;
    	int i;
    	for(i=1;i<=length;i++)
    	{
    		algorithm(data,i,result);
    	}
    }



  • 相关阅读:
    leetcode Lowest Common Ancestor of a Binary Tree
    leetcode 141、Linked list cycle
    leetcode 136、Single Number
    tensorflow使用
    c++ priority_queue
    python语法
    CSS基础之选择器
    并发编程的一些理解
    封装的绑定与多态
    继承与派生
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3303996.html
Copyright © 2011-2022 走看看