首页 > 代码库 > 数组与字符串 1.1
数组与字符串 1.1
实现一个算法,确定一个字符串的所有字符是否全都不同。假使不允许使用额外的数据结构,又该如何处理?
分析:依次遍历输入字符串的每个字符,若当前字符已经出现过,则返回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 }
测试文件
aaaababcabcdaaaaaaaaaaaaaaaaaaa
数组与字符串 1.1
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。