2016华为软件开发题目讲解
来源:互联网 发布:皇朝万鑫软件 编辑:程序博客网 时间:2024/06/06 08:05
1、才参加了华为的笔试,先吧自己写的源码共享一下!
就是输入字符串,过滤掉其他的字符,只对字母进行重复次数的计算。
java源码为
import java.util.Scanner;
import java.util.regex.PatternSyntaxException;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.next();
if (input.length()>1024) {
}else{
String in = filter(input);
String output = compressStringBetter(in);
System.out.printf(output);
}
}
public static String filter(String input){
StringBuffer sb = new StringBuffer();
for (int j = 0; j < input.length(); j++) {
if (input.charAt(j)>='A'&&input.charAt(j)<='Z') {
sb.append(input.charAt(j));
}
}
return sb.toString();
}
public static String compressStringBetter(String str) {
int size = countCompression(str);
if (size >= str.length()) {
return str;
}
StringBuffer sb = new StringBuffer();
char last = str.charAt(0);
int count = 1;
for (int i = 1; i < str.length(); i++) {
if (str.charAt(i)>='A'&&str.charAt(i)<='Z') {
}
if (str.charAt(i) == last) {// 找到重复字符
count++;
} else {
sb.append(last);
sb.append(count);
last = str.charAt(i);
count = 1;
}
}
sb.append(last);
sb.append(count);
return sb.toString();// 前面的+最后一组处理
}
public static int countCompression(String in) {
if (in == null || in.isEmpty()) {
return 0;
}
int size = 0;
char last = in.charAt(0);
int count = 1;
for (int i = 1; i < in.length(); i++) {
if (in.charAt(i) == last) {// 找到重复字符
count++;
} else {
last = in.charAt(i);
size += 1 + String.valueOf(count).length();
count = 1;
}
}
size += 1 + String.valueOf(count).length(); // 处理最后一组
return size;
}
}
2、输入两个大整数,求出两者的乘积,如1234567*123 = 151851741.
java源码为:
import java.util.Scanner;
public class Main2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input1 = sc.next();
String input2 = sc.next();
StringBuffer sb = new StringBuffer();
char[] oneCh = input1.toCharArray();
char[] twoCH = input2.toCharArray();
int[] oneInt = new int[200];
int[] twoInt = new int[200];
int[] sumInt = new int[200];
int lenghOne = input1.length();
int lenghTwo = input2.length();
int i;
for (i = lenghOne - 1; i >= 0; i--) {
oneInt[lenghOne - 1 - i] = oneCh[i] - '0';
}
for (i = lenghTwo - 1; i >= 0; i--) {
twoInt[lenghTwo - 1 - i] = twoCH[i] - '0';
}
int temp, k, j;
for (i = 0; i < lenghOne; i++)
for (j = 0; j < lenghTwo; j++) {
temp = oneInt[i] * twoInt[j];
sumInt[i + j] += temp;
k = i + j;
while (sumInt[k] >= 10) {
sumInt[k + 1] += (sumInt[k] / 10);
sumInt[k] %= 10;
k++;
}
}
int flag = 0;
for (i = 199; i >= 0; i--) {
if (sumInt[i] != 0 || flag == 1) {
sb.append(String.valueOf(sumInt[i]));
flag = 1;
}
}
System.out.printf(sb.toString());
}
}
3、输入互不相同的字符串长度为n,如abc,并输入数字m,如2,然后对其进行m个字符有序的输出,如ab ac bc
java源码为:
import java.util.Scanner;
public class Main3 {
//求组合数 C(m,n)
public static int C(int m,int n){
int c=1;
int k=1;
for (int i=1;i<=m;i++){
c=c*(n+1-i);
k=k*i;
}
return (c/k);
}
//获取str中所有长度为m的子串
public static String[] getSubString(String str,int m){
String[] s=new String[]{};//保存子串
int count=0;//子串数目
int n=str.length();//原字符串长度
if (m>n || m<=0)
return s;//如果子串长度大于字符串长度,则不会有满足要求的子串
else
s=new String[C(m,n)];//保存子串
int[] k=new int[m];
for (int i=0;i<m;i++){
k[i]=i;
}
int p=m-1;
int end=0;
while (end==0){
//保存当前得到的子串
count++;
String temps="";
for (int i=0;i<m;i++)
temps+=str.charAt(k[i]);
s[count-1]=temps;
//获取下一个子串
k[p]=k[p]+1;
while (p>=0 && k[p]-p>n-m){
p=p-1;
if (p>=0)
k[p]=k[p]+1;
}
if (p>=0){
for (int i=p+1;i<m;i++)
k[i]=k[p]+i-p;
p=m-1;
}else{
end=1;
}
}
return s;
}
public static void main(String args[]) {
StringBuffer sb = new StringBuffer();
Scanner sc = new Scanner(System.in);
String str = sc.next();
int m = sc.nextInt();
if (m==0||m>str.length()) {
System.out.println("ERROR");
}else{
String[] ss=getSubString(str,m);
for(String s : ss)
sb.append(s+" ");
System.out.println(sb.toString());
}
}
}
以上均为自己原创代码,如果有不对的地方希望大家能指正!
- 2016华为软件开发题目讲解
- 华为性格测试题目讲解
- 华为软件笔试题目分析
- 2016华为校招机试题(软件开发)
- 华为2018届校园招聘笔试题目以及相应代码分享 软件开发岗位
- 华为软件开发面试经历
- 软件开发工程师面试题目
- 软件开发工程师面试题目
- 软件开发面试题目总结
- 华为软件校园招聘编程上机题目1
- 华为软件校园招聘编程上机题目(2)
- 华为软件校园招聘编程上机题目(1)
- 华为校招软件上机考试题目解析
- 华为云软件开发云助力集时通软件敏捷开发
- 【笔试面试】2015华为软件开发实习生
- 华为软件开发云的简单使用
- 2016华为软件精英挑战赛初赛题目,个人分析与代码,尚未测试代码,因为没有judge系统啊!
- 华为软件精英挑战赛2016
- UVALive 6659 Dromicpalin Substrings
- 堆和栈的区别
- android中onKeyDown()事件的分析
- 360公司 2016校园招聘在线笔试编程题
- IOS-筛选功能之封装重构
- 2016华为软件开发题目讲解
- HDU 5441 Travel (带权并查集 + 离线操作)
- 视频(多媒体) MediaPlayer,camera
- axis2-1.6.2+spring3.1.4 发布 webservice 客户端调用总结
- GOF23设计模式之 建造者模式
- 【Unity教程】Unity中的C#内存管理
- 格式验证、密码加密
- 收集的一个响应式基于bootstrap3的Color Admin 1.7后台模板
- UITableViewCell和UICollectionView的几种动画