首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

写一个函数,对于参数"abc"与"bac"回来同一个数值

2013-07-04 
写一个函数,对于参数abc与bac返回同一个数值不知道有没有这种函数呢//////////////////////////////代

写一个函数,对于参数"abc"与"bac"返回同一个数值
不知道有没有这种函数呢
//////////////////////////////
代码示例
int get_integer(const string&);
给函数传入一个字符串,如果字符串大小一样且包含一样的字母,
则返回一模一样的数值

就像这个样子
get_integer("abc")==get_integer("bac");//true
abc与bac长度相等,而且包含有一模一样的字符
则get_integer的返回值相同
"abc","acb","cba"的值也是一样的,
但是对于包含有不同字符的字符串值不会出现重复
[解决办法]
但是对于包含有不同字符的字符串值不会出现重复 

这不可能,因为字符串的数量远多于整数的数量
[解决办法]
如果不要求同一字符串每次运行时都获得相同的值的话:
int get_integer( string const & str )
{
  static map<string, int> values;
  string temp(str);
  sort(str.begin(), str.end());
  map<string, int>::itearetor where = values.find( temp );
  if(where == values.end())
  {
     where = values.insert(makepair<string const, int>(temp, values.size() ) ).first;
  }
  return where->second;
}
[/code]
[解决办法]
本质上跟素因子一样
以a =2
b=3
c =5
d=7
e = 11
f = 13
...
相乘的结果就是那个要求的int
但是 跟前面几楼说的int很容易溢出  
[解决办法]
压缩了就不能保证唯一性了
素因子法跟自然数已经是11对应了(除了0、1)
即给定字符串能够唯一的确定整数
给定正整数也唯一确定了字符串(当然不计顺序)

热点排行