标签:style blog color io os 使用 ar 文件 数据
实现一个算法,确定一个字符串的所有字符是否全都不同。假使不允许使用额外的数据结构,又该如何处理?
分析:依次遍历输入字符串的每个字符,若当前字符已经出现过,则返回false;否则,继续处理下一个字符。可以使用位操作来降低空间要求,假设输入字符为ASCII字符。
1 #include <iostream> 2 #include <fstream> 3 #include <string> 4 5 using namespace std; 6 7 bool isUnique( const char *s ); 8 9 int main( int argc, char *argv[] ) { 10 string data_file = "./1.1.txt"; 11 ifstream ifile( data_file.c_str(), ios::in ); 12 if( !ifile.is_open() ) { 13 fprintf( stderr, "cannot open file: %s\n", data_file.c_str() ); 14 return -1; 15 } 16 string str; 17 while( ifile >>str ) { 18 cout <<str <<": "; 19 cout <<boolalpha <<isUnique( str.c_str() ) <<endl; 20 } 21 ifile.close(); 22 return 0; 23 } 24 25 bool isUnique( const char *s ) { 26 // bool table[256] = { false }; 27 unsigned char table[32] = { 0 }; 28 while( *s != ‘\0‘ ) { 29 if( table[*s/8] & 1<<*s%8 ) { return false; } 30 table[*s/8] |= 1<<*(s++)%8; 31 } 32 return true; 33 }
测试文件
a
aa
ab
abc
abcd
aaaaaaaaaaaaaaaaaaa
标签:style blog color io os 使用 ar 文件 数据
原文地址:http://www.cnblogs.com/moderate-fish/p/3967095.html