在电子邮件地址内移动点(句点)的算法
Algorithm for moving dots (period) within an email address
对于那些不知道GMAIL的人,GMAIL允许你在原始电子邮件的基础上创建潜在的无限数量的电子邮件。如果您的电子邮件是"mygmail@gmail.com"那么这可以通过两种方式实现:
1) 在gmail末尾的"+"后添加文本,例如mygmail+somethinghere@gmail.com所有电子邮件仍将发送到mygmail@gmail.com
2) 在你的gmail地址中放置"."(开头和结尾除外)例如。m.ygmail@gmail.com,m.y.gmail@gmail.com,m.yg.mai.l@gmail.com等等。注意:my..gmail@gmai.com和mygmail@gm.ail.com不会起作用!
我正在测试一个需要通过有效电子邮件地址注册的应用程序(发送电子邮件激活)。方法(1)是最简单的方法,但电子邮件地址字段不允许使用"+"。这意味着我需要使用方法(2)创建一个gmail帐户数据库。
有人能帮我做一个算法(最好是C/C++代码)吗?我可以提供一段文本,它可以生成所有可能的变体?
一些快速的数学计算表明,可能的组合数为2^(n-1),其中n是电子邮件中的字符数。
感谢
def generateComb(cur,rem):
if len(rem)>0:
generateComb(cur +rem[0], rem[1:])
generateComb(cur+'.'+rem[0], rem[1:])
else:
print cur
generateComb('m','ygmail')
伪代码中的另一个解决方案。这个想法是有2^(n-1)组合,正如你所说,其中n是电子邮件字符串的长度,所以我们用一个从0到2^(n-1)-1的数字来编码点的位置。
假设s是您的电子邮件地址,没有@part(示例中为mygmail)。
n = length(s)
for i = 0 to 2^(n - 1) - 1
s2 = ''
for j = 0 to n - 2 do
s2 = s2 + s[j]
if (bit j in i is set)
s2 = s2 + '.'
s2 = s2 + s[n - 1]
print s2
现在,如果你不想要所有的2^(n-1)组合(如果n>15,可能会太大),只需为第一个循环加上上限,例如:对于i=0到999,得到前1000个组合。
在C/C++中,2^(n-1)翻译为1<lt;(n-1),并且(i中的位j被设置)转换为((i>>j)&1) 。
- 如何使用 GPS 和指南针开发点移动算法
- 用于删除句点和空格的函数
- 什么是从最接近线的一组点找到点的最快算法
- 浮点计算可以用于任何可靠的函数,特别是容器和算法吗?
- OPENCV:如何使用5点算法从来自不同相机的两个图像之间的特征匹配来计算必需矩阵
- C++11 正则表达式匹配不以句点结尾的完整单词
- 控制两个顶点之间的中间点数量 - 布雷森汉姆算法的扩展
- 搜索一组点,其长度总和最小为矩形.算法是什么
- 如何调用对带有句点的服务器的请求,并在响应无效时再次发送
- 最近点对O(nlogn)算法——c++实现中的一些数据问题
- 卷组数算法和凸边界/边缘上的点
- 分数简化算法,浮点异常错误
- 遗传算法中的单点交叉
- 在非常大的数字序列中查找句点
- 编写一个C++ pgm 以从文件"input.txt"读取,每当遇到句点时插入换行符并将修改的内容写入"output.txt"
- 在电子邮件地址内移动点(句点)的算法
- 计算字符串中的省略号而不是句点
- 迭代最近点算法在编译过程中遇到的错误
- 通过一次迭代删除字符串中的所有逗号、句点和小写字母
- G++ std::is_function 实现:_ArgTypes后跟 6 个句点是什么意思