一、题目描述:
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”过滤结果为“abcde”。

    public String stringFilter(String str) {
Map<String, Integer> map = new LinkedHashMap<String, Integer>(); String s = "";
for(int i=0; i<str.length(); i++) {
s = String.valueOf(str.charAt(i));
if(map.keySet().contains(s))
map.put(s, map.get(s)+1);
else
map.put(s, 1);
} String _str = "";
for(Map.Entry<String, Integer> entry : map.entrySet()) {
_str += entry.getKey();
}
return _str;
}

-- 这里要注意,HashMap中元素的遍历顺序,并非按输入顺序,而是按“有利于随机查找的散列(hash)的顺序”。

    -- LinkedHashMap 是按加入时的顺序遍历,类似的还有LinkedHashSet。

二、题目描述:
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
压缩规则:
1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。
2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。

    public String stringZip(String str) {
String _str = ""; int i = 0; //游标位置
char c; //游标字符
while(i<str.length()) {
int n = 1; //相邻相同字符的个数
c = str.charAt(i);
for(int j=i+1; j<str.length(); j++) {
char _c = str.charAt(j);
if(c==_c) {
n++;
} else {
break;
}
} if(n==1) {
_str += c;
} else if(n>1){
_str += String.valueOf(n) + c;
} i += n; //游标位置
} return _str;
}

  

三、题目描述: 
通过键盘输入100以内正整数的加、减、乘、除运算式,请编写一个程序输出运算结果字符串。
输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。

补充说明:
1、操作数为正整数,不需要考虑计算结果溢出的情况。
2、若输入算式格式错误,输出结果为“0”。

    public int arithmetic(String str) {
String[] strArr = str.split(" "); if(strArr.length!=3 || !isNumeric(strArr[0]) || !isNumeric(strArr[2])) {
return 0;
} String operator = strArr[1]; //运算符
int leftInt = Integer.valueOf(strArr[0]); //左操作数
int rightInt = Integer.valueOf(strArr[2]); //右操作数 int i = 0;
if("+".equals(operator)) {
i = leftInt + rightInt;
} else if("-".equals(operator)) {
i = leftInt - rightInt;
} else if("*".equals(operator)) {
i = leftInt * rightInt;
} else if("/".equals(operator)) {
i = leftInt / rightInt;
} return i;
} //判断字符串是否可转化为数字
public static boolean isNumeric(String str){
for (int i=0; i<str.length(); i++){
if (!Character.isDigit(str.charAt(i))){
return false;
}
}
return true;
}

  

四、题目描述: 
求一个字符串中有没有相同的部分,例如abcsabcvx这个字符串中相同的部分是abc,相同的部分至少应该为2位数,如果有相同部分返回true,如果没有返回false。

    public boolean hasSameSubString(String str) {
int i = 0;
int length = str.length();
while(i<length){
for(int j=2; j<length-i; j++) {
String s1 = str.substring(i, i+j); //被包含字符串
String s2 = str.substring(i+j, length); //包含字符串 if(s1.length()<=s2.length() && s2.indexOf(s1)!=-1){ //判断条件
return true;
}
}
i++;
} return false;
}

  

华为上机试题(java)的更多相关文章

  1. 华为上机题汇总----java

        以下华为上机题目都是网上整理得到的,代码都是自己调试过的,由于网上java答案较少,欢迎大家批评指正,也希望对准备华为上机的童鞋们有一点点帮助.在练习的过程中成长,加油!~~  第1题:输入字 ...

  2. C语言面试题大汇总之华为面试题 Eddy整理

    1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局 ...

  3. 牛客网华为机试题之Python解法

    牛客网华为机试题之Python解法 第1题 字符串最后一个单词的长度 a = input().split(" ") print(len(a[-1])) 第2题 计算字符个数 a = ...

  4. 面试题-Java设计模式举例

    面试题-Java设计模式举例 1.适配器模式 涉及三个角色:Target目标接口.Adaptee源角色.Adapter适配器:Adapter将源接口适配到目标接口,继承源接口,实现目标接口. Java ...

  5. 求一个int型整数的两种递减数之和(java)--2015华为机试题

    题目描述: 给出一个整数(负数使用其绝对值),输出这个整数中的两种递减数(1.最大递减数:2.递减数中各位数之和最大的数)之和. 递减数:一个数字的递减数是指相邻的数位从大到小排列的数字,不包含相邻的 ...

  6. java华为面试题

    JAVA方面 1 面向对象的特征有哪些方面 2 String是最基本的数据类型吗? 3 int 和 Integer 有什么区别 4 String 和StringBuffer的区别 5运行时异常与一般异 ...

  7. 华为上机测试题(MP3光标移动-java)

    PS:此题满分,可参考 描述: MP3 Player因为屏幕较小,显示歌曲列表的时候每屏只能显示几首歌曲,用户要通过上下键才能浏览所有的歌曲.为了简化处理,假设每屏只能显示4首歌曲,光标初始的位置为第 ...

  8. 华为上机测试题(数字字符串转二进制-java)

    PS:此题满分,可参考 /*  * 题目:数字字符串转二进制 * 描述: 输入一串整数,将每个整数转换为二进制数,如果倒数第三个Bit是“0”,则输出“0”,如果是“1”,则输出“1”. 题目类别: ...

  9. 华为上机测试题(水仙花数升级版-java)

    PS:这题满分100,没有做对,大家帮忙看看问题在哪 /* * 题目:水仙花数升级版  * 描述: 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1 ...

随机推荐

  1. JS 原型模式创建对象

    例子: class Test { constructor(val) { this.val = val } walk() { console.log(this) console.log('walk') ...

  2. 配置spotlight连接linux服务器

    本文转自(https://blog.csdn.net/qq_31391261/article/details/79429098) 一.配置spotlight连接linux服务器 1.以管理员身份运行软 ...

  3. Docker 搭建java+tomcat

    1. 准备java和tomcat的软件包 jdk-7u79-linux-x64.tar.gz apache-tomcat-7.0.57.tar.gz 2. 编辑Dockerfile 文件 vim Do ...

  4. 动态链接库DLL的创建生成及调用

    一.背景 最近在做CANTOUSB底层驱动的调用,是调用别人已经封装好的库,看不到别人写的源程序.程序中调用的是隐式调用即 x.h+x.lib+x.dll,其中DLL即是动态链接库(Dynamic L ...

  5. servlet、filter、listener继承的基类和获得作用域的方式

    一.servlet: 1.servlet属于j2ee的组件,构建servlet的web project不需要导入项目框架jar包 2.servlet的体系结构:  在j2ee API中,提供给serv ...

  6. 图文具体解释 IntelliJ IDEA 15 创建 Maven 构建的 Java Web 项目(使用 Jetty 容器)

    图文具体解释 IntelliJ IDEA 15 创建 maven 的 Web 项目 搭建 maven 项目结构 1.使用 IntelliJ IDEA 15 新建一个项目. 2.设置 GAV 坐标 3. ...

  7. 用实力让情怀落地!阅兵前线指挥车同款电视TCL&#160;H8800受捧

        近期.一则重磅消息刷爆了平面媒体.微博.朋友圈等各个传播渠道:TCL曲面电视H8800正式入驻大阅兵前线指挥车以及国旗护卫队荣誉室.宣告代表眼下中国彩电业最高技术水准的曲面电视,正式走上大阅兵 ...

  8. 【习题 6-1 UVA-673】Parentheses Balance

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 括号匹配. 栈模拟就好. 多种括号也是一样可以做的. [代码] #include <bits/stdc++.h> usi ...

  9. (三)unity4.6Ugui中文教程文档-------概要-UGUI Basic Layout

     大家好,我是孙广东.   转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:http://www.unit ...

  10. hbase单机安装和简单使用

    电脑太卡了,使用不了hadoop和hdfs了,所以今天安装了一个伪分布式,数据存储在本地磁盘,也没有向HDFS中存,也没有使用自己的zookeeper,安装过程中还出了点小问题,总结一下,免得忘了. ...