华为oj题库分苹果JAVA_华为OJ机试训练(一)
题目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机试训练(一)相关推荐
- 你们要的华为hcia题库来了,华为数通,存储,云计算应有尽有快来点进来看看
华为hcia题库还不赶紧收藏起来 HCNA-HNTD (H12-211)题库 复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.com/s/11-KK8Kn ...
- 北邮oj题库刷题计划(更新ing)
北邮oj题库刷题计划(更新ing) 83. A + B Problem 84 Single Number 85. Three Points On A Line 120 日期 121 最值问题 122 ...
- [华为机试真题]70.分苹果
题目 M个相同苹果放到N个相同篮子里有多少种放法,允许有篮子不放.1<=M<=10,1<=N<=10例如5个苹果三个篮子,3,1,1 和 1,1,3是同一种放法输入 7 3输出 ...
- 华为od题库汇总分享
前言 最近有很多群友问塔子哥华为最新OD题库在哪里可以找.我索性就写篇文章介绍一下吧~.这里塔子哥还是要说一下,大家想进华为od还是要重视题库.因为根据无数群友,网友的反映.华为od就是从题库里抽 ...
- 华为android机考题,华为无线题库_华为射频机考,华为无线射频题库
该文档为华为认证的无线题库,题库知识覆盖非常的全面,适合拿来练练手 QUESTION 5 以下哪些标准是ⅥiF|联盟制定的()? A.80211a/b/gn B. WPA C. WPA2 D.802. ...
- 华为HCIP题库和考试相关注意事项
华为hcip有题库吗? 华为认证尤其是热门的方向,都是有很系统全面的题库的,只是不是官方提供,是要通过购买或者自己找的,网上也有很多免费提供分享,但是可能不是那么全面,也不一定是最新的,要是想要最新最 ...
- 华为OD机试 -分苹果(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
分苹果 题目 AB`两个人把苹果分为两堆 `A`希望按照他的计算规则等分苹果 他的计算规则是按照二级制加法计算 并且不计算进位`12+5=9(1100+0101=9)`, `B`的计算规则是十进制加法 ...
- 华为机试训练做题总结(三)
54. 挑7 题目描述 : 输出7有关数字的个数,包括7的倍数,还有包含7的数字(如17,27,37-70,71,72,73-)的个数 思路分析: 这个问题有一个很好的解决办法就是将数字转为字符型,然 ...
- 东方博宜OJ题库答案
题库https://oj.czos.cn/ 1000 #include <bits/stdc++.h> using namespace std; int main() {int a,b;c ...
- 算法题:分苹果(2016京东招聘笔试题)
笔试题:分苹果(2016京东招聘笔试题) 题目: 果园里有一堆苹果,一共n头(n大于1小于9)熊来分,第一头为小东,它把苹果均分n份后,多出了一个,它扔掉了这一个,拿走了自己的一份苹果,接着第二头熊重 ...
最新文章
- centos6.5 VNC安装步骤
- 科大讯飞AIUI(1)
- boost::multiprecision模块Eigen相关的测试程序
- spring项目的 WebApplicationContext 初始化两次的解决方法
- oracle 修改sgamaxsize_oracle初始化内存配置参数(sga,pga,sharepool)
- 浪潮服务器系统套件,浪潮服务器随机套件版本列表
- 多个python文件打包成exe_Python 3.4 .py文件打包成exe可执行文件方法
- 20191104_1_相关性分析
- 【Typecho插件-前端-播放器】BiliVid -- 好用的Bilibili视频链接解析播放器
- Echarts制作泊松分布图,并加临界线
- 一个二本本科生如何才能进入腾讯,阿里,百度这些大厂?
- 计算机cad比例尺1 150,CAD图纸里面 1:50 和:1:100和1:150三个比例分别怎么换算...
- 插入报错 Could not set property ‘id‘ of ‘class com.chen.flowerdemo.entity.Flower‘ with value
- linux下gzip用法,Linux gzip 命令的使用
- day03数据包拓展——抓包封包
- 广州白云国际机场IT信息化历程及信息化系统介绍
- 一看就停不下来的中国史
- 黑盒测试——边界值分析
- 7种常见分布的数学期望及其证明
- JBDC[mysql][java]
热门文章
- 从事Java后端开发,要学习哪些知识和技能?
- 辛苦整理2021年SSCI和SCI最新最全目录(包括中国SSCI/SCI入选期刊256本)
- 【虹科免费直播预告】光电技术直播月重磅来袭!
- 16选1数据选择器和32选1数据选择器multisim
- 2020杭电多校赛第四场1007 Go Running(hdu6808)
- swf游戏保存进度_关于flash游戏swf文件的修改
- c++播放音频( c++ play audio),为C++应用程序添加启动音效
- 音效php源码,音效大全mp3_音频素材下载(19999款音效素材包)
- 疯狂的程序员——个人解读加经典语录
- HTML列表、表格、表单、超链接、音视频标签、内嵌