设为首页 收藏本站
查看: 1412|回复: 0

[经验分享] 2012年华为软件校园招聘编程测验(又名:2012华为创新杯编程大赛)软件Java语言类原题与解答

[复制链接]

尚未签到

发表于 2016-6-7 08:26:01 | 显示全部楼层 |阅读模式
  特别说明:由于本人编程水平有限,算法特别糟糕,所提供解答为个人随心所写,后两题时间复杂度都为O(n*n),这显然不是阅卷人员希望看到的,希望路过的各位大牛能多多指教,不吝赐与小可更佳的设计。
  1.电文加密(30分)


  • 问题描述:
  有一行电文译文下面规律译成密码:
  A->Z a->z
  B->Y b->y
  C->X c->x
  ...
  即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变,请编写函数将输入字符串加密


  • 要求实现方法:
  public String encrypt(String input)
  【输入】String input,源字符串
  【返回】字符串类型,加密后的字符串
  


  • 示例:
  1)输入:input = "abcd34!z"
  返回:"zyxw34!a"
  2)输入:input = "Xyz45@#1b"
  返回:"Cba45@#1y"
  
  2.找重复字符(30分)


  • 问题描述:
  有一字符串,里面可能包含英文字母(大写、小写)、数字、特殊字符,请编写函数找出里面的重复字符,并将这些重复字符组成新的字符串输出。
  


  • 要求实现方法:
  public String RepeatingChar(String input)
  【输入】String input,输入字符串
  【返回】字符串类型,重复字符组成的新字符串
  
  注:如果没有重复字符串,返回空字符串;如果有多个重复字符,只返回一个字符。
  


  • 示例:
  1)输入:input= "ftgfklzevcg"
  返回:"fg
  
  2)输入:input = "qwertyuiopqawsedrfr"
  返回:"qwer"
  
  
  3.通配符匹配(40分)


  • 问题描述:
  判断包含通配符的匹配字符串是否完全匹配输入的字符串。匹配子串中包含的通配符仅有“*”和“?”,且它们都仅表示一个不为空的字符。
  


  • 要求实现方法:
  public int StrFMTCmp(String strCmp, String strMatch)
  【输入】String strCmp,输入的字符串
  String strMatch,匹配子串
  【返回】整形,0:不匹配;1:匹配
  


  • 示例:
  输入:strCmp= "wertyb",strMatch = "w*r"
  输出:1
  
  输入:strCmp= "dfgibeg",strMatch = "*?c"
  输出:0
  
  输入:strCmp= "hjkjgb",strMatch = "*?k"
  输出:1
  

  由于是初级试题,都比较简单,不做过多叙述,直接附上个人编写源代码:
  

package huawei.exam;
/**
* <p>
* Title: SWTest
* </p>
*
* <p>
* Description:
* </p>
*
* <p>
* Copyright: Copyright (c) 2012
* </p>
*
* <p>
* Company: huawei
* </p>
*
* @author kaiping he
* @version 1.0
*/
public class SWTest {
public static void main(String[] args) {
// TODO:可以在此处添加测试代码
SWTest test = new SWTest();
// 电文加密测试
System.out.println("---------------电文加密测试---------------");
String input1 = "abcd34!z";
String input2 = "Xyz45@#1b";
System.out.println("input1:" + input1 + "\noutput1:"
+ test.encrypt(input1) + "\ninput2:" + input2 + "\noutput2:"
+ test.encrypt(input2));
System.out.println("---------------找重复字符测试---------------");
String input3 = "ftgfklzevcg";
String input4 = "qwertyuiopqawsedrfr";
System.out.println("input1:" + input3 + "\noutput1:"
+ test.RepeatingChar(input3) + "\ninput2:" + input4
+ "\noutput2:" + test.RepeatingChar(input4));
System.out.println("---------------通配符匹配测试---------------");
String strCmp1 = "wertyb";
String strMatch1 = "w*r";
String strCmp2 = "dfgibeg";
String strMatch2 = "*?c";
String strCmp3 = "hjkjgb";
String strMatch3 = "*?k";
System.out.println("strCmp1:" + strCmp1 + "\nstrMatch1:" + strMatch1
+ "\nresult1:" + test.StrFMTCmp(strCmp1, strMatch1)
+ "\nstrCmp2:" + strCmp2 + "\nstrMatch2:" + strMatch2
+ "\nresult2:" + test.StrFMTCmp(strCmp2, strMatch2)
+ "\nstrCmp3:" + strCmp3 + "\nstrMatch3:" + strMatch3
+ "\nresult3:" + test.StrFMTCmp(strCmp3, strMatch3));
}
/**
* 电文加密
*
* @param
* @return
*/
public String encrypt(String input) {
if (input == null) {
return "";
}
char temp[] = input.toCharArray();
for (int i = 0; i < temp.length; i++) {
if (temp >= 'a' && temp <= 'z') {
temp = (char) ('z' - (temp - 'a'));
} else if (temp >= 'A' && temp <= 'Z') {
temp = (char) ('Z' - (temp - 'A'));
}
}
return new String(temp, 0, temp.length);
}
/**
* 找重复字符
*
* @param
* @return
*/
public String RepeatingChar(String input) {
StringBuffer result = new StringBuffer("");
if (input == null || "".equals(input)) {
return result.toString();
}
StringBuffer tmp = new StringBuffer(input);
char c;
boolean isRepeat;
for (int i = 0; i < tmp.length(); i++) {
c = tmp.charAt(i);
isRepeat = false;
for (int j = i + 1; j < tmp.length(); j++) {
if (c == tmp.charAt(j)) {
isRepeat = true;
tmp.deleteCharAt(j);
}
}
if(isRepeat){
result.append(c);
}
}
return result.toString();
}
/**
* 通配符匹配
*
* @param
* @return
*/
public int StrFMTCmp(String strCmp, String strMatch) {
int result = -1;
if (strCmp != null && strMatch != null) {
result = 0;
char c;
for (int i = 0; i < strCmp.length(); i++) {
if (strCmp.length() - i < strMatch.length()) {// 如果剩下的字符个数已经小于匹配串的长度
break;
}
int j = 0;
for (; j < strMatch.length(); j++) {
c = strMatch.charAt(j);
if (c == '*' || c == '?') {
if (strCmp.charAt(i + j) == '\0') {
break;
}
continue;
}
if (c != strCmp.charAt(i + j)) {
break;
}
}// end for
if (j == strMatch.length()) {
result++;
}
}// end for
}// end if
return result;
}
}


  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-227195-1-1.html 上篇帖子: 教你如何进入IBM、微软、华为等一流IT企业 下篇帖子: 华为总裁任正非谈企业管理:正确的方向来自于妥协
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表