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
  • 相关阅读:
    超大文件排序
    透彻理解迪杰斯特拉算法
    Floyd-傻子也能看懂的弗洛伊德算法(转)
    轻松实现在浏览器上播放本地视频
    Caffeine缓存处理
    每日日报94
    每日日报93
    下载安装SQL server2008的步骤
    每日日报92
    每日日报91
  • 原文地址:https://www.cnblogs.com/moderate-fish/p/3967095.html
Copyright © 2011-2022 走看看