判断一系列字符串中,是否存在一个字符串是另一个字符串的前缀。可以按字典序排一个序,然后前后两个对比一下就行;虽然此法比较耗时,但胜在简单易懂,空间消耗小,代码短。
Run Time: 0.27sec
Run Memory: 708KB
Code Length: 601Bytes
Submit Time: 2011-06-23 20:31:06
// Problem#: 1426
// Submission#: 823325
// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/
// All Copyright reserved by Informatic Lab of Sun Yat-sen University
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string s[ 10000 ];
int t, n;
int i;
bool find;
cin >> t;
while ( t-- ) {
cin >> n;
for ( i = 0; i < n; i++ )
cin >> s[ i ];
sort( s, s + n );
find = false;
for ( i = 1; i < n; i++ ) {
if ( s[ i ].find( s[ i - 1 ] ) != string::npos ) {
find = true;
break;
}
}
cout << ( find ? "NO": "YES" ) << endl;
}
return 0;
}