求字符串的最大公共部分;

xiaoxiao2025-08-13  31

class Solution { public: string::iterator RelizeFindEn(string &str,string &compared_str) { //"实现find_end" string::iterator iter=str.end(); auto iter_begin=str.begin(); auto iter_end=str.end(); while(iter_begin!=iter_end) { auto iter1=iter_begin; auto iter2=compared_str.begin(); while(*iter1==*iter2) { ++iter1; ++iter2; if(iter2==compared_str.end()) { iter=iter_begin; cout<<"find "<<compared_str<<" in "<<str<<endl; break; } if(iter1==iter_end) {return iter;} } ++iter_begin; } return iter; } string longestCommonPrefix(vector<string>& strs) { for(size_t i=0;i<strs.size();i++) { if(strs[i].size()==0) return ""; } string common_string_; string max_common_string_; bool clear_flag_=false; for(size_t i=0;i<strs[0].size();i++) { common_string_.push_back(strs[0][i]); for(size_t j=1;j<strs.size();j++) { auto iter=RelizeFindEn(strs[j],common_string_); cout<<*(iter)<<endl; if(iter!=strs[j].end()) continue; else { if(i==strs[0].size()-1)//最后一个字符 { if(common_string_.size()>1) { common_string_.erase(common_string_.end()-1); break; } else common_string_.clear(); } else//不是最后一个字符 说明中间有隔断 { common_string_.erase(common_string_.end()-1); clear_flag_=true; break; } } } if(common_string_.size()>max_common_string_.size()) max_common_string_=common_string_; if(clear_flag_) { common_string_.clear(); clear_flag_=false; } } return max_common_string_; } };
转载请注明原文地址: https://www.6miu.com/read-5034787.html

最新回复(0)