leetcode929-Unique Email Addresses

2024-04-24 06:12

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

题目

每个 有效电子邮件地址 都由一个 本地名 和一个 域名 组成,以 ‘@’ 符号分隔。除小写字母之外,电子邮件地址还可以含有一个或多个 ‘.’ 或 ‘+’ 。
例如,在 alice@leetcode.com中, alice 是 本地名 ,而 leetcode.com 是 域名 。
如果在电子邮件地址的 本地名 部分中的某些字符之间添加句点(‘.’),则发往那里的邮件将会转发到本地名中没有点的同一地址。请注意,此规则 不适用于域名 。
例如,"alice.z@leetcode.com” 和 “alicez@leetcode.com” 会转发到同一电子邮件地址。
如果在 本地名 中添加加号(‘+’),则会忽略第一个加号后面的所有内容。这允许过滤某些电子邮件。同样,此规则 不适用于域名 。
例如 m.y+name@email.com 将转发到 my@email.com。
可以同时使用这两个规则。
给你一个字符串数组 emails,我们会向每个 emails[i] 发送一封电子邮件。返回实际收到邮件的不同地址数目。
示例 1:
输入:emails = [“test.email+alex@leetcode.com”,“test.e.mail+bob.cathy@leetcode.com”,“testemail+david@lee.tcode.com”]
输出:2
解释:实际收到邮件的是 “testemail@leetcode.com” 和 “testemail@lee.tcode.com”。

分析

这道题目可以充分利用好java的数据结构,先分别找到@和+对应的下标,然后把+前面所有的非点号字符连接起来,然后最后把@符号后面的字符拼接起来即可

import java.util.HashSet;
import java.util.Set;public class uniqueEmailAddresses {public static void main(String[] args) {String[] arr = {"test.email+alex@leetcode.com","test.e.mail+bob.cathy@leetcode.com","testemail+david@lee.tcode.com"};System.out.println(getCount(arr));}public static int getCount(String[] emails) {Set<String> set = new HashSet();for(String str:emails) {int atIndex = str.indexOf('@');int addIndex = str.indexOf('+');if(addIndex == -1) {addIndex = atIndex;}StringBuilder build = new StringBuilder();for(int i = 0;i<addIndex;i++) {if(str.charAt(i) != '.') {build.append(str.charAt(i));}}set.add(build.append(str.substring(atIndex)).toString());}return set.size();}
}

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



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

相关文章

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

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

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++】智能指针——auto_ptr,unique_ptr,shared_ptr

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

js发送邮件确定email地址

<a href="mailto:wjl@tom.com?subject=aaa&body=11111">test</a>

Leetcode142: Restore IP Addresses

Given a string containing only digits, restore it by returning all possible valid IP address combinations. For example: Given "25525511135", return ["255.255.11.135", "255.255.111.35"]. (Order do

C++:独占指针(unique_ptr)的理解

引入 在C++中,动态内存的管理是通过运算符new/delete来完成的: new:在动态内存中为对象分配空间,并且返回一个指向该对象的指针,我们可以选择返回对象对其进行初始化;delete:接受一个动态对象的指针,销毁该对象,并且释放与之关联的内存。 动态分配的对象的生命周期与它们在哪里创建是无关的,只有当显式地被释放时,这些对象才会销毁。 当我们对动态内存的使用不当时,会出现很多麻烦: