
字符串处理今天的是一个字符串匹配的问题:
题目007 最长字符后缀
思路分析:字符串从后面开始进行字符串的匹配,其中需要注意的是找出字符串的最小长度(这个可以理解为是一个小技巧),还要不断更新这个长度,原因是当出现不一样的字符时,也就是当前字符不匹配,那么说明当前len长度过长,需要更新len。代码如下:
#include#include using namespace std; const int maxn = 210; int n; string str[maxn]; //定义的字符串数组 int main() { while(cin >> n, n) { int len = 1000; for(int i = 0; i < n; i ++) { cin >> str[i]; if(len > str[i].size()) len = str[i].size(); // 最小长度寻找 } while(len) { bool success = true; // 控制是否成功 for(int i = 1; i < n; i ++) { bool is_same = true; // 控制条件是否成立,此时的条件是是否进行匹配 for(int j = 1; j <= len; j ++) { if(str[0][str[0].size() - j] != str[i][str[i].size() - j]) { is_same = false; break; } } if(!is_same) { success = false; break; } } if(success) break; len --; //更新长度 } cout << str[0].substr(str[0].size() - len) << endl; //输出 } return 0; }
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)