电话号码分身

题目描述

继MIUI8推出手机分身功能之后,MIUI9计划推出一个电话号码分身的功能:首先将电话号码中的每个数字加上8取个位,然后使用对应的大写字母代替 ("ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"), 然后随机打乱这些字母,所生成的字符串即为电话号码对应的分身。

输入描述:

第一行是一个整数T(1 ≤ T ≤ 100)表示测试样例数;接下来T行,每行给定一个分身后的电话号码的分身(长度在3到10000之间)。

输出描述:

输出T行,分别对应输入中每行字符串对应的分身前的最小电话号码(允许前导0)。

示例1

输入

4
EIGHT
ZEROTWOONE
OHWETENRTEO
OHEWTIEGTHENRTEO

输出

0
234
345
0345
  1 import java.util.ArrayList;
  2 import java.util.Arrays;
  3 import java.util.HashMap;
  4 import java.util.List;
  5 import java.util.Map;
  6 import java.util.Scanner;
  7 import java.util.Set;
  8
  9 /**
 10  *
 11  *  电话号 分身
 12  *
 13  * @author Dell
 14  *
 15  */
 16 public class Main {
 17
 18 static public Map mapping = new HashMap<String,String>();
 19 static {
 20      //  由于要加8 所以 数字对应错位
 21     mapping.put("ZERO", "2");
 22     mapping.put("ONE", "3");
 23     mapping.put("TWO", "4");
 24     mapping.put("THREE", "5");
 25     mapping.put("FOUR", "6");
 26     mapping.put("FIVE", "7");
 27     mapping.put("SIX", "8");
 28     mapping.put("SEVENT", "9");
 29     mapping.put("EIGHT", "0");
 30     mapping.put("NINE", "1");
 31
 32 }
 33
 34 /**
 35  *   分批 根据 特殊字符进行 分析
 36  * @param res
 37  */
 38 static public String analysisedStr = ""; //存储分析结果
 39 // 1、 ZERO(Z) TWO(W) FOUR(U) SIX(X)  EIGHT(G)
 40 static public  String analysis1(String s) {
 41     while(true) {
 42     if (s.contains("X")) {
 43         s=s.replaceFirst("S","");
 44         s=s.replaceFirst("I","");
 45         s=s.replaceFirst("X","");
 46         analysisedStr += "8";
 47     }
 48     if (s.contains("U")) {
 49         s=s.replaceFirst("F","");
 50         s=s.replaceFirst("O","");
 51         s=s.replaceFirst("U","");
 52         s=s.replaceFirst("R","");
 53         analysisedStr += "6";
 54     }
 55     if (s.contains("W")) {
 56         s=s.replaceFirst("T","");
 57         s=s.replaceFirst("W","");
 58         s=s.replaceFirst("O","");
 59         analysisedStr += "4";
 60     }
 61
 62     if (s.contains("Z")) {
 63         s=s.replaceFirst("Z","");
 64         s=s.replaceFirst("E","");
 65         s=s.replaceFirst("R","");
 66         s=s.replaceFirst("O","");
 67         analysisedStr += "2";
 68     }
 69     if (s.contains("G")) {
 70         s=s.replaceFirst("E","");
 71         s=s.replaceFirst("I","");
 72         s=s.replaceFirst("G","");
 73         s=s.replaceFirst("H","");
 74         s=s.replaceFirst("T","");
 75         analysisedStr += "0";
 76     }
 77     if (!s.contains("U")&&!s.contains("X")
 78     &&!s.contains("W")&&!s.contains("G")&&!s.contains("Z")) {
 79         return s;
 80     }
 81     }
 82 }
 83 // 2、  THREE(T) FIVE(F)  SEVEN(S)
 84 static public String analysis2(String s) {
 85     while(true) {
 86     if (s.contains("T")) {
 87         s=s.replaceFirst("T","");
 88         s=s.replaceFirst("H","");
 89         s=s.replaceFirst("R","");
 90         s=s.replaceFirst("E","");
 91         s=s.replaceFirst("E","");
 92         analysisedStr += "5";
 93     }
 94     if (s.contains("F")) {
 95         s=s.replaceFirst("F","");
 96         s=s.replaceFirst("I","");
 97         s=s.replaceFirst("V","");
 98         s=s.replaceFirst("E","");
 99         analysisedStr += "7";
100     }
101     if (s.contains("S")) {
102         s=s.replaceFirst("S","");
103         s=s.replaceFirst("E","");
104         s=s.replaceFirst("V","");
105         s=s.replaceFirst("E","");
106         s=s.replaceFirst("N","");
107         analysisedStr += "9";
108     }
109     if (!s.contains("T")&&!s.contains("F")
110     &&!s.contains("S")) {
111         return s;
112     }
113     }
114 }
115 // 3、 ONE(O) NINE(I)
116 static public String  analysis3(String s) {
117     while(true) {
118     if (s.contains("O")) {
119         s=s.replaceFirst("O","");
120         s=s.replaceFirst("N","");
121         s=s.replaceFirst("E","");
122         analysisedStr += "3";
123     }
124     if (s.contains("I")) {
125         s=s.replaceFirst("N","");
126         s=s.replaceFirst("I","");
127         s=s.replaceFirst("N","");
128         s=s.replaceFirst("E","");
129         analysisedStr += "1";
130     }
131     if (!s.contains("O")&&!s.contains("I")) {
132         return s;
133     }
134     }
135 }
136 static public String  analysis(String s) {
137      analysisedStr = "";
138      s =analysis1(s);
139      s =analysis2(s);
140      s =analysis3(s);
141      return analysisedStr;
142 }
143 public static void main(String[] args) {
144       // 输入
145     Scanner sc = new Scanner(System.in);
146     int n = Integer.parseInt(sc.nextLine());
147     String[] ns =  new String[n];
148     for (int i = 0; i < n; i++) {
149         ns[i] = sc.nextLine();
150     }
151 //    // 替换
152     for (int i = 0; i < ns.length; i++) {
153         ns[i] = analysis(ns[i]);
154     }
155     //排序
156     for (int i = 0; i < ns.length; i++) {
157         char[] cs = ns[i].toCharArray();
158         Arrays.sort(cs);
159         ns[i] = new String(cs);
160     }
161     //  输出
162     for (int i = 0; i < ns.length; i++) {
163         System.out.println(ns[i]);
164     }
165 }
166 }
167     

原文地址:https://www.cnblogs.com/the-wang/p/8981622.html

时间: 2024-08-13 11:04:34

电话号码分身的相关文章

小米面试题:手机分身,电话号码隐藏。

小米面试题: 手机分身,电话号码隐藏. 0-9分别对应ZERO,ONE,TWO,...,NINE 为保证手机拨号安全性,拨号后,存为对应的字符串,并打乱顺序,保证安全性. 现在给定一个字符串,求最小的数字组合 例: TWOONE OTNWOE 12 12 分析: 关键字搜索:  第一次 第二次 第三次 0 ZERO Z     1 ONE   O   2 TWO W     3 THREE   R   4 FOUR U     5 FIVE   F   6 SIX X     7 SENVE  

网页中的电话号码实现一键直呼

问题: 把网站通过手机打开时,希望通过点击电话号码,弹出呼出的菜单. 方法一: 使用超链接的tel属性,如下: <a class="" href="tel:需要呼叫的电话号码"></a> 方法二: js跳转 代码部分:<span class='myPhone' + obj[i].Mobile + ")'>" + obj[i].Mobile + "</span> JavaScript部分:

5北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第一位数字不是0.校外电话又分为本市电话和外地电话两类。拨校外电话需要先拨0,若是本市电话则接着拨8位数字(第一位不是0),若是外地电话则拨3位区码后再拨8位电话号码(第一位不是0)。

答: 电话号码=[校内电话号码|校外电话号码] 校内电话号码=非零数字+3位数字 校外电话号码=[本市号码|外地号码] 本市号码=数字零+8位数字 外地号码=数字零+3位数字+8位数字 非零数字=[1|2|3|4|5|6|7|8|9] 数字零=0 3位数字=3{数字}3 8位数字=非零数字+7位数字 7位数字=7{数字}7 数字=[0|1|2|3|4|5|6|7|8|9] 其中,[ ]意思是或,从校内电话号码或校外电话号码中选择一个:{ }表示重复,两边的数字表示重复次数的下限和上限:=意思是定

CSS3小分队——text分身text-shadow

上一篇:<CSS3小分队——进击的border-radius> 上一篇把border-radius拉上台走了个秀,今天我们轮着角色接着走.台下一团shadow在蠕动,恩,今天上台的是一个shadow属性.关于shadow的属性有两个:box-shadow和text-shadow,今天我们说的是text-shadow先. 一.shadow阴影的背后 text-shadow在CSS2中出现过,可是昙花一现,在CSS2.1中又被抛弃了,现在这团阴影又在CSS3中满血归来. 顾名思义,text-sha

UESTC_方老师的分身 II CDOJ 915

方老师的分身 II Time Limit: 10000/5000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 方老师计算出了走路时间最长的那个分身所用的时间.于是有个特殊的分身(据说是方老师真身!)就不想如此古板的走最短路了!由于这个分身的特殊性,这个分身对于单向边可以当双向边走.但是这个特殊的分身想走最短路的同时,要求至少经过k条边. Input 有多组数据 第一行两个整数n,m(1≤n

PHP使用正则表达式验证电话号码(手机和固定电话)

这个还不错,很有用. tel='验证的电话号码'; $isMob="/^1[3-8]{1}[0-9]{9}$/";  $isTel="/^([0-9]{3,4}-)?[0-9]{7,8}$/";  if(!preg_match($isMob,$tel) && !preg_match($isTel,$tel))  {   echo '<script>alert("手机或电话号码格式不正确.如果是固定电话,必须形如(xxxx-xxx

关于如何禁止识别页面中的数字为电话号码

有些手机会将网页中的数字识别为电话号码,出现'变色'的情况. 可以用meta标签解决这个问题. <meta name="format-detection" content="telephone=no,email=no"/> 这样就不会出现'变色'情况了.

国内固定电话正则验证:&#39;tel&#39;: [/0\d{2,3}-\d{7,8}(|([-\u8f6c]{1}\d{1,5}))$/, &quot;请填写有效的电话号码&quot;],

// 验证字段 $('#info_form').validator({ rules : { checkMobile : function(ele) { return checkMobile(ele); }, 'tel': [/0\d{2,3}-\d{7,8}(|([-\u8f6c]{1}\d{1,5}))$/, "请填写有效的电话号码"], }, fields : { '#agentName' : { rule : 'required;', msg : {required : '请输入

北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成

北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第一位数字不是0.校外电话又分为本市电话和外地电话两类. 拨校外电话需要先拨0,若是本市电话则接着拨8位数字(第一位不是0),若是外地电话则拨3位区码后再拨8位电话号码(第一位不是0). 答: 电话号码=[校内电话号码|校外电话号码] 校内电话号码=非零数字+3位数字 校外电话号码=[本市号码|外地号码] 本市号码=数字零+8位数字 外地号码=数字零+3位数字+8位数字 非零数字=[1|2|3|4|5|6|7|8|9] 数字零=0