确定字符互异

来源:互联网 发布:数据结构java版第四版 编辑:程序博客网 时间:2024/05/24 02:31

请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。

给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。

测试样例:
"aeiou"
返回:True
"BarackObama"
返回:False

【解法1】

  1.     bool check(str)
  2.     {
  3.          sort(str.begin(), str.end());
  4.          
  5.          if(unique(str.begin(), str.end())==str.end())
  6.                 
  7.                 return true;
  8.           else
  9.                 return false;
  10.     }  
  11.     


另附Java版正则表达式

  •     bool check(string str)
  •     {       
  •          return   !str.matches(".*(.)(.*\\1).*");    //贪婪匹配
  •     }



    【说明】

      unique()函数是一个去重函数,STL中unique的函数 unique的功能是去除相邻的重复元素(只保留一个),还有一个容易忽视的特性是它并不真正把重复的元素删除。他是c++中的函数,所以头文件要加#include<iostream.h>,具体用法如下:

        int num[100];

     unique(num,mun+n)返回的是num去重后的尾地址,之所以说比不真正把重复的元素删除,其实是,该函数把重复的元素一到后面去了,然后依然保存到了原数组中,然后返回去重后最后一个元素的地址,因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序。


  • 0 0
    原创粉丝点击