电话号码转换 - 华为机试真题题解(Java)

考试平台: 时习知

分值: 200分(第二题)

考试时间: 两小时(共2题)

华为机试真题

题目描述

将电话号码转换,需要实现如下的中英文电话号码转换:

  • 输入的字符串中每个数字对应为中文数字中的英文单词,如Double表示两个数字相同。
  • 将输入的中文数字字符串转换为英文单词的电话号码。
  • 若输入不合法,则输出字符串ERROR

中英文数字,英文数字分别如下:

中文数字:Yi Er San Si Wu Liu Qi Ba Jiu Ling
英文数字:One Two Three Four Five Six Seven Eight Nine Zero

说明:

  1. 输入保证每个单词都是合法的英文数字单词/中文数字单词/Double;
  2. 合法的字符串长度不会太长,不会含空格;
  3. 若含Double:
    • 合法情况下:其后必须跟随英文数字单词,代表两个数字,如DoubleSix,代表SixSix;
    • 不合法情况下:其后跟随的不是英文数字单词,如DoubleLiu 或 DoubleDouble 都是非法的。

输入

一行仅由大小写字母组成的字符串,非空且长度不大于500。

输出

一个字符串,表示转换后的电话号码;若输入不合法,输出ERROR

示例1

输入:
SixOneThreeOneDoubleZero

输出:
LiuyiSanyilingLing

解释:
SixOneThreeOneDoubleZero 对应的转换结果为 LiuyiSanyilingLing

示例2

输入:
YiLingSanSanJiu

输出:
OneZeroThreeThreeNine

解释:
YiLingSanSanJiu 对应的转换结果为 OneZeroThreeThreeNine

示例3

输入:
DoubleLiu

输出:
ERROR

解释:
DoubleLiu 是非法输入

题解

该题目要求将输入的中英文数字字符串进行转换。如果输入字符串是中文数字单词,则将其转换为对应的英文数字单词;如果输入字符串是英文数字单词,则将其转换为对应的中文数字单词。此外,输入字符串中可能包含 Double,表示后面的数字出现两次。若 Double 后面不是合法的英文数字单词,则输入非法。

题目分析

  1. 输入字符串可能包含中文数字或英文数字单词,以及 Double
  2. 输入字符串需要逐个解析,处理 Double 情况时,需要特别小心,确保其后跟随的是合法的英文数字单词。
  3. 字符串解析时,需要不断检查当前单词是否为合法的数字单词。

解题思路

  1. 使用两个列表分别存储中文数字单词和英文数字单词,以便进行相互转换。
  2. 遍历输入字符串,逐个解析单词,判断其是否为合法的数字单词或 Double
  3. 如果遇到 Double,检查其后是否跟随合法的英文数字单词,如果不是,则输出 ERROR
  4. 根据当前单词类型(中文或英文),进行对应的转换。
  5. 最后输出转换后的字符串,若中途发现非法输入,则输出 ERROR

Java

import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = n

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

🔥笔试编程真题宝典💯 文章被收录于专栏

📕分享大厂机试真题深度剖析核心考点,助你速通面试。

全部评论

相关推荐

Sigma429:极兔啊,薪资开的巨低,还在上海,索性不做笔试了
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务