您的位置:首页 > 职场人生

面试心经-笔试编程整理

2017-03-26 11:00 204 查看
最近在找实习,作为技术渣,一直被虐,不得已只能拼命刷题攒人品,下面是遇到的一些编程题,整理如下,如有雷同,纯属抄袭~

360java语言编程:

数学期望

题目描述:

小明同学最近学习了概率论,他了解到数学期望的定义:设X为一个随机变量,X可以取n种不同的取值x1,x2,x3,…,xn。取x1的概率为p1,取x2的概率为p2,以此类推。定义随机变量X的数学期望为:E[X]=x1*p1+x2*p2+…+xn*pn。

小明回到家中,他想编程计算数学期望,你能帮助他么?

输入

输入第一行一个数n(1<=n<=100),接下来有n行,第i行有两个数xi和pi,xi和pi都是整数,-100<=xi<=100, 0<=pi<=100。表示随机变量X取值为xi的概率是pi/100。输入保证p1+p2+p3+…+pn=100。

输出

输出一个数,随机变量X的数学期望E[x],小数点后四舍五入保留3位。

样例输入

3

0 50

1 20

2 30

样例输出

0.800

 

代码:

package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class wcctest {
public static void main(String[] args)
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
double sum = 0;
int n = 0;
try {
str = br.readLine().trim();
n = Integer.parseInt(str);
for(int i=0;i<n;i++){
String temp = br.readLine().trim();
int begin = temp.trim().indexOf(" ");
int end = temp.trim().lastIndexOf(" ");
String str1= temp.substring(0, begin);
String str2 = temp.substring(end+1, temp.length());
int a = Integer.parseInt(str1);
int b = Integer.parseInt(str2);
double c = ((double)b/100);
sum += a*c;
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(sum);
}
}
偶串

时间限制:C/C++语言 2000MS;其他语言 4000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:

一个字符串S是偶串当且仅当S中的每一个字符都出现了偶数次。如字符串”aabccb”是一个偶串,因为字符a,b,c都出现了两次。而字符串”abbcc”不是偶串,因为字符a出现了一次。

现在给出一个长度为n的字符串T=t1,t2,t3,…,tn。字符串的子串为其中任意连续一段。T长度为1的子串有n个,长度为2的子串有n-1个,以此类推,T一共有n(n+1)/2个子串。给定T,你能算出它有多少个子串是偶串吗?

输入

输入一个字符串T,T中只有小写字母。T的长度不超过100000。

输出

输出一个数,T的所有子串中偶串的个数。

样例输入

abbc

样例输出

1

代码:

package test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class wcctest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
try {
str = br.readLine().trim();
int sum = GetEvenStringSum(str);
System.out.print("\n"+sum);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

private static int GetEvenStringSum(String str) {
// TODO Auto-generated method stub
int count = 0;
for(int i = 0;i<str.length();i++)
for(int j=0;j+i<str.length();j++)
{
int sublen = i+1;
String subString = str.substring(j,j+sublen);
if(isEvenString(subString))
count++;
}
return count;
}

public static boolean isEvenString(String str)
{
boolean ret = true;
char[] arr = str.toCharArray();//String.toCharArray 方法 ,作用:将字符串转换为字符数组。
HashSet<Character> set = new HashSet<Character>();
Map<Character,Integer> map = new HashMap<Character,Integer>();
for(char c:arr)
{
if (!set.contains(c)) {
set.add(c);
map.put(c, 1);
}else
{
map.put(c, map.get(c)+1);
}
}
Iterator ite = map.entrySet().iterator();
while(ite.hasNext())
{
Map.Entry<Character,Integer> entry = (Entry<Character, Integer>) ite.next();
int num = entry.getValue();
if(num%2!=0)
{
ret = false;
break;
}
}
return ret;
}
}


华为编程模拟题:
a+b

描述:计算a+b的和

每行包括两个整数a和b

对于每行输入对应输出一行a和b的和

输入

1  5

输出

6

代码:

package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class wcctest {

public static void main(String[] args)
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
try {
str = br.readLine().trim();
int begin = str.trim().indexOf(" ");
int end = str.trim().lastIndexOf(" ");
String str1= str.substring(0, begin);
String str2 = str.substring(end+1, str.length());
int a = Integer.parseInt(str1);
int b = Integer.parseInt(str2);
System.out.print(a+b);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 面试 360