算法:号码转换问题

该题太水,没必要参考。

package practice;

import java.io.BufferedInputStream;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

/**
 * @author caiyu
 * @date 2014-11-2
 */
public class MemorableTelNumber {
    public static void main(String[] args) {
        Scanner cin = new Scanner(new BufferedInputStream(System.in));
        int l = cin.nextInt();
        String num;
        Map<String, Integer> m = new TreeMap<String, Integer>();
        StringBuffer c;
        int tmp;
        String s;
        for (int i = 0; i < l; i++) {
            num = cin.next().trim();
            c = new StringBuffer();
            for (int j = 0, len = num.length(); j < len; j++) {
                tmp = handle(num.charAt(j));
                if (0 <= tmp && tmp <= 9)
                    c.append(tmp);
            }

            if (c.length() == 7) {
                c.insert(3, "-");
                s = c.toString();
                if (m.containsKey(s))
                    m.put(s, m.get(s) + 1);
                else
                    m.put(s, 1);
            }
        }

        for (String k : m.keySet()) {
            if (m.get(k) > 1)
                System.out.println(k + " " + m.get(k));
        }
    }

    private static int handle(char c) {
        if (c == ‘A‘ || c == ‘B‘ || c == ‘C‘)
            return 2;
        if (c == ‘D‘ || c == ‘E‘ || c == ‘F‘)
            return 3;
        if (c == ‘G‘ || c == ‘H‘ || c == ‘I‘)
            return 4;
        if (c == ‘J‘ || c == ‘K‘ || c == ‘L‘)
            return 5;
        if (c == ‘M‘ || c == ‘N‘ || c == ‘O‘)
            return 6;
        if (c == ‘P‘ || c == ‘R‘ || c == ‘S‘)
            return 7;
        if (c == ‘T‘ || c == ‘U‘ || c == ‘V‘)
            return 8;
        if (c == ‘W‘ || c == ‘X‘ || c == ‘Y‘)
            return 9;
        if (c == ‘-‘)
            return -1;
        return Integer.parseInt("" + c);
    }
}

时间: 2024-10-08 21:10:39

算法:号码转换问题的相关文章

【编程练习】电话本号码转换加排序

功能描述:http://poj.org/problem?id=1002 解决关键: 1)使用数值数组代替二维数组--数组角标表示排序的号码,元素的值记录出现的次数:利用数值的天然大小顺序直接按顺序记录标准化后的号码. 2)至于格式问题,不一定拘泥于将格式写入字符串,直接控制格式化字符串. PS.因为号码不会变化且唯一,所以可以这样使用--如果用出现次数(变化的量)排序就不这么方便了. #include<stdio.h> #include<string.h> #include<

CUCM号码转换实验

T0/T1/T2/T3实验报告 实验环境: Phone1:1000/1003,注册到 CUCM Phone2:2000/2001,注册到R2 CME 1-T0实验 Call routing ---Translation pattern 在R1 上 Debug cch323 h225 主叫转8888XXXX 被叫转2002 Oct 31 00:27:39.825: //18/801E4A710700/H323/setup_ind: callingNumber[88881000] calledNum

打败算法 —— 字符串转换整数

本文参考 出自LeetCode上的题库 —— 字符串转整数,本篇文章也主要是参考LeetCode上的官方题解 官方题解采用了编译原理中有限自动机的概念,没想到编译原理中的知识可以应用到算法中,所以在这篇文章里记录下scala版本的解法,但是不对具体题解作介绍,想看具体解释还请移步力扣官网 https://leetcode-cn.com/problems/string-to-integer-atoi/ 字符串转换整数问题 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为

腾讯课堂老师qq号码转换成 teacherid

result = 215696775^858006833 if(result<0){ result=4294967296+result; } alert(result);

java验证身份证号码是否有效源代码

1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 package test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Hashtable; import java.util.Scanner; imp

java验证身份证号码是否有效源代码 wn25的头像 wn25 23 2015-01-04 20:09 6 基本信息 Java &#215; 1 浏览

原文:http://www.open-open.com/code/view/1420373343171 1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 package test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; impor

Base64算法

一. Base64算法概述 Base64算法最早应用于解决电子邮件传输的问题.早期,由于“历史问题”,电子邮件只允许ASCII码字符,如果邮件中包含非ASCII码字符,当它通过有“历史问题”的网关时,这个网关会对该字符的二进制位进行调整,即将其8位二进制码的最高位置0,这样用户收到的邮件就会是一封乱码.为了解决这个问题,产生了Base64算法. Base64主要用于将不可打印的字符转换成可打印字符,或者简单的说将二进制数据编码成ASCII字符(注:可打印的). 将二进制数据编码成ASCII字符主

程序员初学机器学习算法

英文原文:4 Self-Study Machine Learning Projects 学习机器学习有很多方法,大多数人选择从理论开始. 如果你是个程序员,那么你已经掌握了把问题拆分成相应组成部分及设计小项目原型的能力,这些能力能帮助你学习新的技术.类库和方法.这些对任何一个职业程序员来说都是重要的能力,现在它们也能用在初学机器学习上. 要想有效地学习机器学习你必须学习相关理论,但是你可以利用你的兴趣及对知识的渴望,来激励你从实际例子学起,然后再步入对算法的数学理解. 通过本文你可以学习到程序员

数组之间如何进行转换

分析问题 在程序中,类型转换无处不在,数组类型也不例外.对于普通的类型,子类对象可以隐式地转换为父类类型,所有的数组类型都继承自System.Array类型,不存在相互间的关系,但隐式转换仍然被允许,其机制如下: 1.包含值类型项目的数组不能隐式地转换成其他任何类型. 2.两个数组类型能够相互转换的一个前提是两者维数相同. 在满足上述两个前提下,源数组的项目类型必须存在一个隐式或者显式的转换到目标数组的项目类型. 下面的一些代码说明了转换的机制: //编译成功 string[] sz={"a&q