zoukankan      html  css  js  c++  java
  • 数组与字符串 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
    ", 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 != '' ) {
    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
  • 相关阅读:
    SQLite数据库
    如何将大文件写入到数据库中
    Visual Studio 2008 附加进程调试
    VS2010MFC编程入门
    关于exe文件传递参数方法
    监视剪贴板数据
    Delphi快捷键
    判断一个对象是否存在, 谁更快
    全局探色器
    用DELPHI中实现RAR文件解压到指定一目录
  • 原文地址:https://www.cnblogs.com/moderate-fish/p/3967095.html
Copyright © 2011-2022 走看看