电话号码可能组成的字符串

Given a digit string, return all possible letter combinations that the number could represent.

A mapping of digit to letters (just like on the telephone buttons) is given below.

Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.


class Solution {
    public LinkedList<String> letterCombinations(String digits) {
       
        String base[] = { "", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };
		/*
		 * 先进先出队列
		 */
		LinkedList<String> result = new LinkedList();
         if(digits.isEmpty()) return result;
		result.add("");
		for(int i = 0;i < digits.length();i++) {
			int x = Character.getNumericValue(digits.charAt(i));
			/*
			 * 如果队列头元素字符串的长度与i相等,那么说明此时还有队列的头元素还是上一次拼接过后的状态
			 * 此时需要取出来,与后面的一个按键的所有字母按个拼接放入队尾
			 */
			while(result.peek().length() == i) {
				String temp  = result.remove();
				for(char s :base[x].toCharArray()) {
					result.add(temp+s);
				}
			}
		}
		return result;
    }
}

### JavaScript 中使用正则表达式提取电话号码 在 JavaScript 中,可以通过 `RegExp` 对象或者直接使用字面量形式定义正则表达式来匹配电话号码。常见的电话号码模式可能包括区号、分机号以及国际代码等部分。下面提供一种通用的解决方案。 #### 创建正则表达式 可以使用如下正则表达式来匹配标准的电话号码格式: ```javascript const phoneRegex = /(\+?\d{1,3}[-.\s]?)?(\(?\d{3}\)?[-.\s]?)?\d{3}[-.\s]?\d{4}/; ``` 该正则表达式的含义分解如下[^1]: - `\+?`: 可选的加号前缀表示国际区号。 - `\d{1,3}`: 表示可选的国家/地区代码,长度为 1 到 3 位数字。 - `[-.\s]?`: 允许存在一个连字符 `-` 或者点 `.` 或空白符作为分隔符。 - `\(?\d{3}\)?`: 匹配三位数区域码并允许括号包围它。 - `[-.\s]?`: 同样支持分隔符。 - `\d{3}` 和 `\d{4}`: 分别代表中间三位和最后四位本地号码。 #### 字符串方法应用 利用上述正则表达式配合字符串方法 `.match()` 来捕获所有符合条件的电话号码片段: ```javascript let text = "请联系我:0755-88889999 或拨打 +86 (123) 456-7890"; let matches = text.match(phoneRegex); console.log(matches); // 输出 ["0755-88889999", "+86 (123) 456-7890"] ``` 这里我们调用了 `String.prototype.match()` 函数,它可以返回由匹配项组成的数组或者是 null 如果没有任何匹配的话。 #### 处理多个电话号码的情况 当目标字符串含有不止一个电话号码时,则需采用全局标志 (`g`) 进行设置以便找出全部实例: ```javascript // 添加 g 标志使得 regex 查找整个字符串而不是只找到第一个匹配 const globalPhoneRegex = /(\+?\d{1,3}[-.\s]?)?(\(?\d{3}\)?[-.\s]?)?\d{3}[-.\s]?\d{4}/g; let allMatches = text.match(globalPhoneRegex); console.log(allMatches); // 输出 ["0755-88889999", "+86 (123) 456-7890"] ``` 这样就可以成功地从一段文字里抽取所有的潜在电话联系信息了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值