zoukankan      html  css  js  c++  java
  • 字符串去重

    题目:求字符串的最长非重复子序列。比如字符串“dabaccdeff”,它的最长非重复子序列为“dabcef”

    #include<iostream>
    #include <stack>  
    #include<stdlib.h>
    using namespace std;
    
    int NoReplicatedSubstring(char *s,int len)
    {    
        const int tablesize=256;
    	char hashtable [tablesize] = {'0'};
        int count=0;
        for(int i=0;i<len;i++)
          hashtable[s[i]]=s[i];
        
        stack<char> c;//创建一个栈
        for(int i=0;i < len;i++)
        {
            if(hashtable[s[i]]!='\0')
            {
                c.push(hashtable[s[i]]);
                hashtable[s[i]]='\0';
    			count++;
            }
        }
        while(!c.empty())
        {
            cout<<c.top();
            c.pop();
        }
        cout<<endl;
        return count;
    }
    
    void main()
    {
        char *s="dabaccdeff";
        int len=strlen(s);
        int count=NoReplicatedSubstring(s,len);
        system("pause");
    }

    更简单的方法就是用set

    #include <iostream>
    #include <set>
    using namespace std;
    
    void NoReplicatedSubstring(char *s,int len) 
    {
    	set <char> HashMap;
    	for(int i=0;i<len;i++)
    		HashMap.insert(s[i]);
    
    	set <char>::iterator itr = HashMap.begin();
    	for(itr;itr!=HashMap.end();itr++)
    		cout<<*itr<<",";
    };
    
    int main()
    {
    	char *s="dabaccdeff";  
    	int len=strlen(s);  
    	NoReplicatedSubstring(s,len);  
    	system("pause");
    	return 0;
    }



     

  • 相关阅读:
    POJ
    FZU
    HDU
    HDU
    HDU
    HDU
    Educational Codeforces Round 84 E. Count The Blocks
    B Boundary(由弦求圆)
    D. Maximum Sum on Even Positions(翻转1次,求最大偶数位和)
    E. DeadLee(思维,拓扑图处理)
  • 原文地址:https://www.cnblogs.com/byfei/p/3112375.html
Copyright © 2011-2022 走看看