电话号码分身问题,小米笔试真题

题目描述
继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

解题思路:
差点以为入了动态规划的坑,猛然发觉原来不是
这里写图片描述

在牛客网上时:
按照纸上的顺序删除的话,会报超内存。。。(到现在也不知道什么原因)
然后改了一下,把较长的先删除就顺利过关了,为什么??为什么??

Java代码:(当然还有其他实现方式)

import java.util.Scanner;
public class Main {public void Solution(String data){int out[]=new int[10];StringBuffer db=new StringBuffer(data);while(db.toString().contains("G")){db.deleteCharAt(db.indexOf("E"));db.deleteCharAt(db.indexOf("I"));db.deleteCharAt(db.indexOf("G"));db.deleteCharAt(db.indexOf("H"));db.deleteCharAt(db.indexOf("T"));out[0]++;}while(db.toString().contains("Z")){db.deleteCharAt(db.indexOf("Z"));db.deleteCharAt(db.indexOf("E"));db.deleteCharAt(db.indexOf("R"));db.deleteCharAt(db.indexOf("O"));out[2]++;}while(db.toString().contains("W")){db.deleteCharAt(db.indexOf("T"));db.deleteCharAt(db.indexOf("W"));db.deleteCharAt(db.indexOf("O"));out[4]++;}while(db.toString().contains("U")){db.deleteCharAt(db.indexOf("F"));db.deleteCharAt(db.indexOf("O"));db.deleteCharAt(db.indexOf("U"));db.deleteCharAt(db.indexOf("R"));out[6]++;}while(db.toString().contains("X")){db.deleteCharAt(db.indexOf("S"));db.deleteCharAt(db.indexOf("I"));db.deleteCharAt(db.indexOf("X"));out[8]++;}while(db.toString().contains("T")){db.deleteCharAt(db.indexOf("T"));db.deleteCharAt(db.indexOf("H"));db.deleteCharAt(db.indexOf("R"));db.deleteCharAt(db.indexOf("E"));db.deleteCharAt(db.indexOf("E"));out[5]++;}while(db.toString().contains("S")){db.deleteCharAt(db.indexOf("S"));db.deleteCharAt(db.indexOf("E"));db.deleteCharAt(db.indexOf("V"));db.deleteCharAt(db.indexOf("E"));db.deleteCharAt(db.indexOf("N"));out[9]++;}while(db.toString().contains("O")){db.deleteCharAt(db.indexOf("O"));db.deleteCharAt(db.indexOf("N"));db.deleteCharAt(db.indexOf("E"));out[3]++;}while(db.toString().contains("F")){db.deleteCharAt(db.indexOf("F"));db.deleteCharAt(db.indexOf("I"));db.deleteCharAt(db.indexOf("V"));db.deleteCharAt(db.indexOf("E"));out[7]++;}while(db.toString().contains("I")){db.deleteCharAt(db.indexOf("N"));db.deleteCharAt(db.indexOf("I"));db.deleteCharAt(db.indexOf("N"));db.deleteCharAt(db.indexOf("E"));out[1]++;}for(int i=0;i<=9;i++){if(out[i]>=1){for(int j=0;jSystem.out.print(i);}}}}public static void main(String[] args) {Main m=new Main();Scanner s=new Scanner(System.in);while(s.hasNextInt()){int num=s.nextInt();for(int n=0;nString data=s.next();m.Solution(data);System.out.println();}}}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部