Unique Email Address

2024-09-04 14:38
文章标签 address email unique

本文主要是介绍Unique Email Address,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

思路1:面试的时候可以自己写process method

class Solution {public int numUniqueEmails(String[] emails) {if(emails == null || emails.length == 0) {return 0;}HashSet<String> set = new HashSet<String>();for(String email: emails) {String unique = parseEmail(email);set.add(unique);}return set.size();}private String parseEmail(String email) {String[] splits = email.split("@");String localname = splits[0];String domain = splits[1];return process(localname) + "@" + domain;}private String process(String localname) {StringBuilder sb = new StringBuilder();for(int i = 0; i < localname.length(); i++) {char c = localname.charAt(i);if(c == '.') {continue;} else if(c == '+'){break;} else {sb.append(c);}}return sb.toString();}
}

思路2:如果知道split("\\+");那么取第一个split[0]就可以了,然后replace(".","");

class Solution {public int numUniqueEmails(String[] emails) {if(emails == null || emails.length == 0) {return 0;}HashSet<String> set = new HashSet<String>();for(String email: emails) {String unique = parseEmail(email);set.add(unique);}return set.size();}private String parseEmail(String email) {String[] splits = email.split("@");String[] localname = splits[0].split("\\+");String domain = splits[1];return localname[0].replace(".","") + "@" + domain;}  
}

 

这篇关于Unique Email Address的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136254

相关文章

Tomcat启动报错:transport error 202: bind failed: Address already in use

Tomcat启动报错:transport error 202: bind failed: Address already in use 了,上网查找了下面这篇文章。也是一种解决办法。 下文来自:http://blog.csdn.net/sam031503/article/details/7037033 tomcat 启动日志报出以下错误:  ERROR: transport err

Address localhost:1099 is already in use:tomcat频繁重启端口占用问题

错误提示 Unable to open debugger port (127.0.0.1:58198): java.net.SocketException "Socket closed" Address localhost:1099 is already in use 端口被占用 报错原因 由于短时间内频繁运行tomcat服务器。 为了避免出现这一错误。可以点击刷新uodate

LeetCode 63 Unique Paths II

题意: 给出一个带有障碍物的棋盘,每次行动向下或向右移动一格,求从左上角到右下角有几种方案。 思路: 简单dp题,假设dp[i][j]表示第i行第j列的方案数,那么状态转移方程就为 dp[i][j] = dp[i - 1][j] + dp[i][j - 1] 。 注意下边界条件就好了,而且对于障碍物,直接把dp清零即可。 可以发现这个dp只和当前行和上一行有关,进而做空间优化,用一

LeetCode 62 Unique Paths

题意: 一个n*m的棋盘,每次行动只能向下或者向右走1格,求从左上角走到右下角有几种不同的方案数。 思路: 因为行动只能向下向右,所以总步数是一定的,即n - m + 2步。那么问题就变成了这里面的哪几步是向下的,就是组合数了,即从n - m + 2个中选n - 1个的组合数。 题目里说的n和m值太夸张了,因为他的函数返回int……所以肯定很小。 代码: class S

C++ boost::upgrade_lock boost::upgrade_to_unique_lock如何使用 例子

upgrade_lock将可将读锁(shared_lock)升级为upgrade_lock,与shared_lock不互斥,与别的upgrade_lock和unique_lock互斥。 也就是说线程A获得mutex的upgrade_lock后,线程B、C等还可以获得mutex的share_mutex,反之亦然。 upgrade_to_unique_lock可将upgrade_lock升级为独占

C++ 有 mutex.lock 为什么要用 lock_guard 、unique_lock

因为直接操作 mutex,即直接调用 mutex 的 lock / unlock 函数。   而使用 lock_guard 可以自动加锁、解锁   C++ Boost库 多线程 线程锁mutex lock_guard 、unique_lock 实例_软件工程小施同学 的专栏-CSDN博客

【C++11及其特性】智能指针——unique_ptr

unique_ptr目录 一.排他所有权模式二.auto_ptr的缺点1.可以直接复制和拷贝构造2.STL可以直接赋值3.不支持动态内存分配数组 三.unique_ptr(C++11)1.不支持直接赋值和构造2.STL可以不可以直接赋值3.支持动态内存分配数组 四.unique_ptr的用法1.构造函数2.赋值操作3.主动释放对象4.放弃对象控制权5.重置6.交换 五.排他性智能指针的陷阱六

c/c++:CMakeLists.txt中添加编译/连接选项使用内存错误检测工具Address Sanitizer(ASan)

Address Sanitizer(ASan)是一个快速的内存错误检测工具。从gcc 4.8开始,AddressSanitizer成为gcc的一部分。 既然是gcc内置的内存检查工具,用起来比第三方的库更方便些。只要指定相应的编译链接参数就可以实现内存泄露检查了,如下是是cmake脚本中增加Address Sanitizer选项的示例: # 使用sanitize进行内存泄露检查# 编译选项t

【精讲】PCIe基础篇——BAR(Base Address Register)详解

一、为什么需要BAR         系统中的每个设备中,对地址空间的大小和访问方式可能有不同的需求,例如,一个设备可能有256字节的内部寄存器/存储,应该可以通过IO地址空间访问,而另一个设备可能有16KB的内部寄存器/存储,应该可以通过基于MMIO的设备访问。哪些地址应该使用哪种方式(IO或Memory)来访问它们的内部位置,这是系统软件(即BIOS和OS内核)的工作。因此设备必须为系统软件

【C++】智能指针——auto_ptr,unique_ptr,shared_ptr

目录 auto_ptr unique_ptr shared_ptr 并发问题 循环引用问题 个人主页:传送门——>东洛的克莱斯韦克 智能指针的原理:传送门——>智能指针的原理 auto_ptr 使用方法参考官方文档 传送门——>auto_ptr文档 auto_ptr并不是一个优秀的智能指针,它的设计理念是——管理权转移。如下代码示意 auto_ptr(aut