java 笔试算法题,面试时要求手写算法
写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用
1.统计一篇英文文章单词个数。
公共类字数统计{
公共静态void main(String[] args) {
try(FileReader fr=new FileReader( a . txt ){
int counter=0;
布尔状态=假;
国际货币联盟
while((currentChar=fr.read())!=-1) {
if(current char== current char== \ n
current char== \ t current char== \ r ){
状态=假
}
else if(!州){
状态=真
柜台;
}
}
System.out.println(计数器);
}
捕捉(异常e) {
e。printstacktrace();
}
}
}补充:这个程序可能有很多种写法,这里选择的是丹尼斯里奇和布赖恩w克尼根老师在他们不朽的著作《The C Programming Language》 中给出的代码,向两位老师致敬。下面的代码也是如此。
2.输入年月日,计算该日期是这一年的第几天。
公开课日计数{
公共静态void main(String[] args) {
int[][] data={
{31,28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{31,29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
扫描仪sc=新扫描仪(系统。在);
System.out.print(请输入年月日(1980 11 28): );
int year=sc。nextint();
int month=scnextint();
int date=sc。nextint();
int[]days of month=data[(year % 4==0 year % 100!=0 年% 400==0)?1 : 0];
int sum=0;
for(int I=0;我月-1日;i ) {
sum=每月的天数[I];
}
总和=日期;
系统。出去。println(sum);
即close();
}
}3.回文素数:所谓回文数就是顺着读和倒着读一样的数(例如:11,121,1991…),回文素数就是既是回文数又是素数(只能被1和自身整除的数)的数。编程找出119999之间的回文素数。
公众的类回文字符数{
公共静态void main(String[] args) {
for(int I=11;i=9999i ) {
如果(is prime(I)是palindomic(I)){
系统。出去。println(一);
}
}
}
公共静态布尔isPrime(int n) {
for(int I=2;I=数学。sqrt(n);i ) {
if(n % i==0) {
返回错误的
}
}
返回真实的
}
public static boolean ispalindromec(int n){
int temp=n;
int sum=0;
而(温度0) {
总和=总和* 10温度% 10
temp/=10;
}
return sum==n;
}
}4.全排列:给出五个数字12345的所有排列。
公共类全置换{
public static void perm(int[]list){
烫发(列表,0);
}
私有静态void perm(int[] list,int k) {
if (k==list.length) {
for(int I=0;i list.lengthi ) {
系统。出去。打印(列表[I]);
}
系统。出去。println();
}否则{
for(int I=k;i list.lengthi ) {
swap(list,k,I);
烫发(列表,k1);
swap(list,k,I);
}
}
}
私有静态空的交换(int[] list,int pos1,int pos2) {
int temp=list[pos 1];
列表[位置1]=列表[位置2];
list[pos 2]=temp;
}
公共静态void main(String[] args) {
int[] x={1,2,3,4,5 };
烫发;
}
}5.对于一个有N个整数元素的一维数组,找出它的子数组(数组中下标连续的元素组成的数组)之和的最大值。
下面给出几个例子(最大子数组用粗体表示):
数组:{ 1, -2, 3,5, -3, 2 },结果是:8
2) 数组:{ 0, -2, 3, 5, -1, 2 },结果是:9
3) 数组:{ -9, -2,-3, -5, -3 },结果是:-2
可以使用动态规划的思想求解:
公共类MaxSum {
私有静态int max(int x,int y) {
返回x y?x:y;
}
public static int maxSum(int[]array){
int n=数组。长度;
int[]start=new int[n];
int[]all=new int[n];
all[n-1]=start[n-1]=array[n-1];
for(int I=n-2;I=0;我- ) {
start[i]=max(array[i],array[I]start[I 1]);
all[i]=max(start[i],all[I 1]);
}
返回所有[0];
}
公共静态void main(String[] args) {
int[] x1={ 1,-2,3,5,-3,2 };
int[] x2={ 0,-2,3,5,-1,2 };
int[] x3={ -9,-2,-3,-5,-3 };
系统。出去。println(maxSum(x1));//8
系统。出去。println(maxSum(x2));//9
系统。出去。println(maxSum(x3));//-2
}
}6.用递归实现字符串倒转
公共类StringReverse {
公共静态字符串反向(字符串来源){
if(orig instr==null orig instr。length()==1){
返回originStr
}
返回反向(原点字符串。substring(1))源字符串。charat(0);
}
公共静态void main(String[] args) {
系统。出去。println(反转( hello );
}
}7.输入一个正整数,将其分解为素数的乘积。
公共类分解整数{
私有静态列表integer list=new ArrayListInteger();
公共静态void main(String[] args) {
System.out.print(请输入一个数: );
扫描仪sc=新扫描仪(系统。在);
int n=sc。nextint();
分解数(n);
系统。出去。print(n =);
for(int I=0;我列出。size()-1;i ) {
系统。出去。打印(列表。get(I) * );
}
系统。出去。println(列表。获取(列表。size()-1));
}
公共静态void分解器编号(int n){
if(isPrime(n)) {
列表。添加(n);
列表。添加(1);
}
否则{
数学。sqrt(n));
}
}
public static void doIt(int n,int div) {
if(isPrime(div) n % div==0) {
列表。add(div);
分解数(n/div);
}
否则{
doIt(n,div-1);
}
}
公共静态布尔isPrime(int n) {
for(int I=2;I=数学。sqrt(n);i ) {
if(n % i==0) {
返回错误的
}
}
返回真实的
}
}8、一个有n级的台阶,一次可以走1级、2级或3级,问走完n级台阶有多少种走法。
公共类GoSteps
公共静态int计数方式(int n){
if(n 0) {
返回0;
}
else if(n==0) {
返回1;
}
否则{
返回计数路(n - 1)计数路(n - 2)计数路(n-3);
}
}
公共静态void main(String[] args) {
系统。出去。println(计数方式(5));//13
}
}9.写一个算法判断一个英文单词的所有字母是否全都不同(不区分大小写)
公共类AllNotTheSame {
公共静态布尔判断(字符串str) {
字符串temp=str。tolowercase();
int[]字母计数器=new int[26];
for(int I=0;我是临时工。长度();i ) {
int index=temp。charat(I)-a;
字母计数器[索引];
if(letterCounter[index] 1) {
返回错误的
}
}
返回真实的
}
公共静态void main(String[] args) {
系统。出去。println(judge( hello ));
System.out.print(judge(微笑));
}
}10.有一个已经排好序的整数数组,其中存在重复元素,请将重复元素删除掉,例如,A= [1, 1, 2, 2, 3],处理之后的数组应当为A= [1, 2, 3]。
公共类删除重复{
public static int[]remove duplicates(int a[]){
if(a.length=1) {
返回a;
}
int index=0;
for(int I=1;我是洛杉矶人。长度;i ) {
if(a[index]!=a[i]) {
a[index]=a[I];
}
}
int[]b=new int[index 1];
System.arraycopy(a,0,b,0,b . length);
返回b;
}
公共静态void main(String[] args) {
int[] a={1,1,2,2,3 };
a=删除重复项(a);
系统。出去。println(数组。tostring(a));
}
}11.给一个数组,其中有一个重复元素占半数以上,找出这个元素。
公共类FindMost {
public static T T find(T[] x){
t温度=空
for(int i=0,n次=0;我x。长度;i ) {
if(nTimes==0) {
temp=x[I];
ntitimes=1;
}
否则{
if(x[i].等于(临时)){
nTimes
}
否则{
ntitimes-;
}
}
}
返回温度;
}
公共静态void main(String[] args) {
String[]strs={hello , kiss , hello , hello , maybe };
系统。出去。println(find(strs));
}
}12.编写一个方法求一个字符串的字节长度?
public int getword count(String s){
int length=0;
for(int I=0;国际标准长度();我)
{
int ascii=字符。codepointat(s,I);
if(ascii=0 ascii=255)
长度;
其他
长度=2;
}
返回长度;
}以上就是爪哇岛笔试手写算法面试题大全含答案的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。