Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- banana
- anana
- nana
- ana
- na
- a
- $
- #ifndef _SUFFIX_ARRAY_H
- #define _SUFFIX_ARRAY_H
- #include<algorithm>
- #include<cstring>
- #include <stdexcept>
- using namespace std;
- template<class T>
- struct comp_func
- {
- bool operator()(const T l,const T r)
- {
- return strcmp(l,r) < 0;
- }
- };
- template<class T =char>
- class SuffixArray
- {
- int len_;
- T **data_;
- public:
- T *operator[](int i)
- {
- if(i<0 || i>len_)
- throw std::out_of_range("Out of range errorn");
- return data_[i];
- }
- SuffixArray(T *str):len_(strlen(str)),data_(new T*[len_])
- {
- //len_ = strlen(str);
- //data_= new T*[len];
- for(int i =0;i<len_;++i)
- {
- data_[i] = &str[i];
- cout << data_[i] << endl;
- }
- std::sort(&data_[0],&data_[len_],comp_func<T *>());
- }
- void Print()
- {
- for(int i =0;i<len_;++i)
- {
- cout << data_[i] << endl;
- }
- }
- };
- #endif
Add Comment
Please, Sign In to add comment