题目1 ——

通过输入英文句子。将每一个单词反过来,标点符号顺序不变。非26个字母且非标点符号的情况就可以标识单词结束。

标点符号包含,.!?

比如输入:Hello, I need an apple.

输出:

/**

* 华为机试训练1: 通过输入英文句子,将每一个单词反过来。标点符号顺序不变。非26个字母且非标点符号的情况就可以标识单词结束。 标点符号包含,.!?

* Hello, I need an apple.

*

* @author snail

*

*/

public class Main {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

String string = scanner.nextLine();

scanner.close();

String[] ssString = string.split("\\W+");

String[] s2 = string.split("\\w+");

int wordsNum = ssString.length;

for (int i = 0; i < wordsNum; i++) {

if (s2.length >= wordsNum) {

int j = ssString[i].length() - 1;

for (; j > -1; j--) {

System.out.print(ssString[i].charAt(j));

}

System.out.print(s2[i + s2.length - wordsNum]);

} else {

System.out.print(s2[i - s2.length + wordsNum]);

int j = ssString[i].length() - 1;

for (; j > -1; j--) {

System.out.print(ssString[i].charAt(j));

}

}

}

System.out.println();

}

}

题目2——

实现“十七进制”转“十进制”算法:输入一个十七进制数字的字符串(字母一律大写),输出这个数值相应的十进制结果。达到进制转换目的,范围:0-0xFFFFFFFF。

我的程序——

/**

* 实现“十七进制”转“十进制”算法:

* 输入一个十七进制数字的字符串(字母一律大写),

* 输出这个数值相应的十进制结果,达到进制转换目的,

* 范围:0-0xFFFFFFFF。

* @author snail

*

*/

public class Main {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

String string = scanner.nextLine();

scanner.close();

double result = 0;

int length = string.length();

double temp = 0;

char tempChar = '0';

int bitvalue = 0;

for (int i = 0; i < length; i++) {

tempChar = string.charAt(length -i-1);

if (!Character.isDigit(tempChar)) {

if (tempChar>=0x40 && tempChar <=0x46) {

bitvalue = tempChar - 0x41 +10;

}else {

bitvalue = tempChar - 0x61 +10;

}

}else {

bitvalue = tempChar - 0x30;

}

temp = bitvalue * Math.pow(17, i);

result += temp;

}

System.out.println(result);

}

}

题目3——

状态机——

背景:状态机在计算机各个领域中使用很广泛。最简单的状态机包括一组状态集(states)、一个起始状态(start state)、状态间转换条件(transition condition)。

要求:依据定义的脚本构造出状态机,并依据脚本进行状态迁移,或输出状态。

脚本包括例如以下keyword:

Insert  插入状态或迁移条件

语法是Insert 状态1,状态2,条件1

第一条Insert语句的第一个状态默觉得状态机的起始态。

假设状态1或状态2不存在,则新增状态1或状态2,假设状态1在条件1下已经存在其它迁移状态,则Insert失败。并输出Error字符串。

Delete 删除状态或迁移条件,

语法是Delete 状态1/条件1

当删除状态1时。状态1所关联的全部条件全被删除,Delete起始态将删除整个状态机,删除当前活动状态时,无效并输出Error字符串,删除的条件或状态不存在,输出Error字符串。

Input 状态机接收新条件

语法是 Input 条件1

当前状态在条件1下有正确的迁移状态时。状态机迁移到下一个状态,假设在条件1下没有正确的迁移状态时。保持在当前状态,并输出Error字符串;假设当前状态机没有状态。相同输出Error字符串。

Output 输出当前状态

语法是Output。假设当前状态机不存在。输出Error字符串,否则输出当前状态名.

End结束命令

语法是End。收到该命令,脚本执行结束,忽略后面的脚本

说明:输入脚本命令正确,不用考虑异常情况

例子输入:

Insert Sa,Sb,C1

Insert Sb,Sc,C2

Insert Sb,Sd,C3

Insert Sc,Se,C4

Insert Sd,Se,C5

Insert Se,Sa,C6

Input C1

Delete Sc

Input C2

Output

Input C3

Output

End

输出是 :

Error

Sb

Sd

我的程序——感觉写得非常垃圾,没有找到合适的方法来表示这个状态。懂的朋友请指点下。

package tree.test;

import java.util.ArrayList;

import java.util.Scanner;

/**

* 状态机

* 20:03

* @author snail

*

*/

public class Main {

private static ArrayList statusList = new ArrayList();

private static String currentStatus ;

private static Status firstStatus ;

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

String string = "";

ArrayList inputList = new ArrayList();

while(!(string=scanner.nextLine()).equals("End")){

inputList.add(string);

}

int length = inputList.size();

String temp = "";

for (int i = 0; i < length; i++) {

temp = inputList.get(i);

if (temp.contains("Insert")) {

insert(temp);

}else if (temp.contains("Delete")) {

delete(temp);

System.out.println("debug-Delete --剩下"+statusList.size());

}else if (temp.contains("Input")) {

input(temp);

System.out.println("当前状态:"+currentStatus.toString());

}else if (temp.contains("Output")) {

output();

//System.out.println("Output"+statusList.toString());

}

}

System.out.println();

}

private static void insert(String string){

String[] ss = string.split(" ");

String dataString = ss[1];

String[] insertStrings = dataString.split(",");

String currentString = insertStrings[0];

String nextString = insertStrings[1];

String requireString = insertStrings[2];

int size = statusList.size();

boolean existFlag = false;

for (int i = 0; i < size; i++) {

if (statusList.get(i).getCurrentStatus().equals(currentString)&&

statusList.get(i).getRequireString().equals(requireString)&&

!statusList.get(i).getNextStatus().equals(nextString)

) {

existFlag = true;

break;

}

}

if (existFlag) {

System.out.println("Error");

return ;

}else {

Status status = new Status();

status.setCurrentStatus(currentString);

status.setRequireString(requireString);

status.setNextStatus(nextString);

if(statusList.size() == 0){

firstStatus = status;

currentStatus = currentString;

}

statusList.add(status);

}

}

/**

* 删除

* @author snail

*

*/

private static void delete(String string){

String[] ss = string.split(" ");

String deleteString = ss[1];

if (deleteString == currentStatus) {

System.out.println("Error");

return ;

}else if(deleteString == firstStatus.getCurrentStatus()){

statusList.clear();

return ;

}

for (int i = 0; i < statusList.size(); i++) {

Status status = statusList.get(i);

//删除状态

if (status.getCurrentStatus().equals(deleteString)) {

for (int j = 0; j < statusList.size(); j++) {

if (statusList.get(j).getNextStatus().equals(deleteString)) {

statusList.get(j).setRequireString("");//删除有关的条件

//statusList.remove(j);

}

}

statusList.remove(i);

return ;

}

//删除条件

if (status.getRequireString().equals(deleteString)) {

statusList.remove(i);

return ;

}

}

//不存在

System.out.println("Error");

return ;

}

private static void input(String string){

String[] ss = string.split(" ");

String inputString = ss[1];

if (currentStatus == null) {

System.out.println("debug-input -- null");

System.out.println("Error");

return ;

}

ArrayList currentList = new ArrayList();

for (int i = 0; i < statusList.size(); i++) {

if (statusList.get(i).currentStatus.equals(currentStatus)) {

currentList.add(statusList.get(i));

}

}

boolean exist = false;

for (int i = 0; i < currentList.size(); i++) {

//System.out.println("debug-input --require:"+currentStatus.requireString+",input :"+inputString);

if (currentList.get(i).requireString.equals(inputString) ) {

String nextString = currentList.get(i).getNextStatus();

//System.out.println("debug-input -- 当前状态中有该条件");

//System.out.println("debug-input -- 下一个状态是"+nextString);

int size = statusList.size();

//寻找下一个状态

for (int j = 0; j < size; j++) {

if (statusList.get(i).getCurrentStatus().equals(nextString)) {

currentStatus = statusList.get(j).getCurrentStatus();

exist = true;

break;

}

}

}

if (exist) {

return ;

}else {

//System.out.println("debug-input -- 没有该迁移状态");

System.out.println("Error");

return ;

}}

{

//System.out.println("debug-input -- 没有该迁移条件");

System.out.println("Error");

return ;

}

}

private static void output(){

if (currentStatus == null) {

System.out.println("Error");

return ;

}else {

System.out.println(currentStatus);

return ;

}

}

public static class Status{

private String currentStatus;

private String requireString;

private String nextStatus;

public String getCurrentStatus() {

return currentStatus;

}

public void setCurrentStatus(String currentStatus) {

this.currentStatus = currentStatus;

}

public String getRequireString() {

return requireString;

}

public void setRequireString(String requireString) {

this.requireString = requireString;

}

public String getNextStatus() {

return nextStatus;

}

public void setNextStatus(String nextStatus) {

this.nextStatus = nextStatus;

}

@Override

public String toString() {

return "Status [currentStatus=" + currentStatus

+ ", requireString=" + requireString + ", nextStatus="

+ nextStatus + "]";

}

}

}

华为oj题库分苹果JAVA_华为OJ机试训练(一)相关推荐

  1. 你们要的华为hcia题库来了,华为数通,存储,云计算应有尽有快来点进来看看

    华为hcia题库还不赶紧收藏起来 HCNA-HNTD (H12-211)题库 复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.com/s/11-KK8Kn ...

  2. 北邮oj题库刷题计划(更新ing)

    北邮oj题库刷题计划(更新ing) 83. A + B Problem 84 Single Number 85. Three Points On A Line 120 日期 121 最值问题 122 ...

  3. [华为机试真题]70.分苹果

    题目 M个相同苹果放到N个相同篮子里有多少种放法,允许有篮子不放.1<=M<=10,1<=N<=10例如5个苹果三个篮子,3,1,1 和 1,1,3是同一种放法输入 7 3输出 ...

  4. 华为od题库汇总分享

    ​ 前言 最近有很多群友问塔子哥华为最新OD题库在哪里可以找.我索性就写篇文章介绍一下吧~.这里塔子哥还是要说一下,大家想进华为od还是要重视题库.因为根据无数群友,网友的反映.华为od就是从题库里抽 ...

  5. 华为android机考题,华为无线题库_华为射频机考,华为无线射频题库

    该文档为华为认证的无线题库,题库知识覆盖非常的全面,适合拿来练练手 QUESTION 5 以下哪些标准是ⅥiF|联盟制定的()? A.80211a/b/gn B. WPA C. WPA2 D.802. ...

  6. 华为HCIP题库和考试相关注意事项

    华为hcip有题库吗? 华为认证尤其是热门的方向,都是有很系统全面的题库的,只是不是官方提供,是要通过购买或者自己找的,网上也有很多免费提供分享,但是可能不是那么全面,也不一定是最新的,要是想要最新最 ...

  7. 华为OD机试 -分苹果(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】

    分苹果 题目 AB`两个人把苹果分为两堆 `A`希望按照他的计算规则等分苹果 他的计算规则是按照二级制加法计算 并且不计算进位`12+5=9(1100+0101=9)`, `B`的计算规则是十进制加法 ...

  8. 华为机试训练做题总结(三)

    54. 挑7 题目描述 : 输出7有关数字的个数,包括7的倍数,还有包含7的数字(如17,27,37-70,71,72,73-)的个数 思路分析: 这个问题有一个很好的解决办法就是将数字转为字符型,然 ...

  9. 东方博宜OJ题库答案

    题库https://oj.czos.cn/ 1000 #include <bits/stdc++.h> using namespace std; int main() {int a,b;c ...

  10. 算法题:分苹果(2016京东招聘笔试题)

    笔试题:分苹果(2016京东招聘笔试题) 题目: 果园里有一堆苹果,一共n头(n大于1小于9)熊来分,第一头为小东,它把苹果均分n份后,多出了一个,它扔掉了这一个,拿走了自己的一份苹果,接着第二头熊重 ...

最新文章

  1. centos6.5 VNC安装步骤
  2. 科大讯飞AIUI(1)
  3. boost::multiprecision模块Eigen相关的测试程序
  4. spring项目的 WebApplicationContext 初始化两次的解决方法
  5. oracle 修改sgamaxsize_oracle初始化内存配置参数(sga,pga,sharepool)
  6. 浪潮服务器系统套件,浪潮服务器随机套件版本列表
  7. 多个python文件打包成exe_Python 3.4 .py文件打包成exe可执行文件方法
  8. 20191104_1_相关性分析
  9. 【Typecho插件-前端-播放器】BiliVid -- 好用的Bilibili视频链接解析播放器
  10. Echarts制作泊松分布图,并加临界线
  11. 一个二本本科生如何才能进入腾讯,阿里,百度这些大厂?
  12. 计算机cad比例尺1 150,CAD图纸里面 1:50 和:1:100和1:150三个比例分别怎么换算...
  13. 插入报错 Could not set property ‘id‘ of ‘class com.chen.flowerdemo.entity.Flower‘ with value
  14. linux下gzip用法,Linux gzip 命令的使用
  15. day03数据包拓展——抓包封包
  16. 广州白云国际机场IT信息化历程及信息化系统介绍
  17. 一看就停不下来的中国史
  18. 黑盒测试——边界值分析
  19. 7种常见分布的数学期望及其证明
  20. JBDC[mysql][java]

热门文章

  1. 从事Java后端开发,要学习哪些知识和技能?
  2. 辛苦整理2021年SSCI和SCI最新最全目录(包括中国SSCI/SCI入选期刊256本)
  3. 【虹科免费直播预告】光电技术直播月重磅来袭!
  4. 16选1数据选择器和32选1数据选择器multisim
  5. 2020杭电多校赛第四场1007 Go Running(hdu6808)
  6. swf游戏保存进度_关于flash游戏swf文件的修改
  7. c++播放音频( c++ play audio),为C++应用程序添加启动音效
  8. 音效php源码,音效大全mp3_音频素材下载(19999款音效素材包)
  9. 疯狂的程序员——个人解读加经典语录
  10. HTML列表、表格、表单、超链接、音视频标签、内嵌