华为OJ答案java版题目2文档格式.docx
- 文档编号:21387617
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:14
- 大小:401.31KB
华为OJ答案java版题目2文档格式.docx
《华为OJ答案java版题目2文档格式.docx》由会员分享,可在线阅读,更多相关《华为OJ答案java版题目2文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
一、
二、
等比数列求和:
Sn=a1(1-q^n)/(1-q)
=(a1-an*q)/(1-q)(q≠1)
2.自守数
自守数是指一个数的平方的尾数等于该数自身的自然数。
例如:
252=625,762=5776,93762=87909376。
请求出n以内的自守数的个数
publicstaticintmethod2(inta){
intcount=0;
for(inti=1;
i<
=a;
i++){
intsum=i*i;
//i为一位数
if(i/10==0){
if(sum%10==i){
count++;
}
}elseif(i/100==0){//i为2位数
if(sum%100==i){
}elseif(i/1000==0){//i为3位数
if(sum%1000==i){
}elseif(i/10000==0){//i为4位数
if(sum%10000==i){
}
returncount;
方案二:
(用Java.Lang.String的方法)
publicstaticintmethod2(inti){
Stringstr;
Stringstr2;
intlength1;
intlength2;
Stringresult;
for(inta=1;
a<
=i;
a++){
str=String.valueOf(a);
str2=String.valueOf(a*a);
length1=str.length();
length2=str2.length();
//截取str2的后面几位,长度与str1相同
result=str2.substring(length2-length1);
if(result.equals(str)){
count++;
3.首先输入要输入的整数个数n,然后输入n个整数。
输出为n个整数中负数的个数,和所有正整数的平均值。
publicstaticvoidmethod2(int[]array){
intsum=0;
intcountB=0;
intcountS=0;
for(inti=0;
array.length;
i++){
if(array[i]>
sum+=array[i];
countB++;
}elseif(array[i]<
countS++;
if(countB==0){
fusshu:
"
+countS+"
zhengshuis0"
return;
System.out.println("
zhengshuaverage:
+sum/countB);
//获取连续一个字符串,转化为数组
Stringi=sc.nextLine();
String[]c=i.split("
"
//或者以,为分隔符
/*Stringi=sc.nextLine();
"
*/
int[]array=newint[c.length];
for(intj=0;
j<
c.length;
j++){
array[j]=Integer.parseInt(c[j]);
i"
method2(array);
System.out.println("
error"
4.将一个字符中所有出现的数字前后加上符号“*”,其他字符保持不变
publicstaticvoidmethod2(Stringstr){
char[]array=str.toCharArray();
Stringtemp;
Stringresult=null;
if((array[i]>
=48)&
&
(array[i]<
=57)){
temp=String.valueOf(array[i]);
result=str.replace(temp,temp+"
*"
str=result;
}
System.out.println(str);
5.请实现接口:
unsignedintAddCandidate(char*pCandidateName);
功能:
设置候选人姓名
输入:
char*pCandidateName候选人姓名
输出:
无
返回:
输入值非法返回0,已经添加过返回0,添加成功返回1
VoidVote(char*pCandidateName);
投票
publicstaticbooleanadd(Stringstr){
Set<
String>
set=candidates.keySet();
Iterator<
it=set.iterator();
while(it.hasNext()){
Stringname=it.next();
if(name.equals(str)){
returnfalse;
candidates.put(str,0);
returntrue;
publicstaticvoidvote(Stringstr){
for(Stringname:
set){
intnum=candidates.get(name)+1;
candidates.put(name,num);
6.输入一个字符串,返回其中连续出现最多的数字的个数,并输出这些数字。
如输入“a123b5555”则返回4,输出“5555”
publicstaticintmethod(Stringstr){
inttemp=0;
intmax=0;
Listlist=newArrayList();
Listlist_temp=newArrayList();
booleanflag=false;
//出现数字即赋值true
//遍历数组
for(inti=0;
if(array[i]>
='
0'
array[i]<
9'
){
temp++;
list_temp.add(array[i]);
flag=true;
}elseflag=false;
if(!
flag){
//如果上次出现的连续数字个数的比最大连续数字个数多,则交换
if(temp>
=max){
max=temp;
list.clear();
//把list_temp赋值给list
for(intj=0;
list_temp.size();
list.add(list_temp.get(j));
}
//清空
list_temp.clear();
temp=0;
//处理最一个数字串最大,但是没有其他字符结尾的情况,(这样flag不会为false,就不会执行交换)
if(temp>
max=temp;
list.clear();
//把list_temp赋值给list
for(intj=0;
list.add(list_temp.get(j));
//输出连续出现的数字
list.size();
System.out.print(list.get(j));
returnmax;
7.现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
publicstaticbooleanmethod(Stringstr){
String[]array=str.split("
\\."
System.out.println(array.length);
//长度必须等于4
if(!
(array.length==4)){
System.out.println(array.length);
returnfalse;
Stringtemp=null;
inttempInt;
temp=array[i];
charc=temp.charAt(0);
//不能以0开头
if(c=='
try{
tempInt=Integer.parseInt(array[i]);
//0-255之间
if(!
(tempInt>
=0&
tempInt<
=255)){
returnfalse;
}catch(NumberFormatExceptione){
//含有字符串
8.题目如图
intcountnum=0,counta=0,countA=0,countSymbol=0,sum=0;
if(array.length<
=4){
sum+=5;
}elseif((array.length>
=5)&
(array.length<
=7)){
sum+=10;
}elseif(array.length>
=8){
sum+=25;
array.length;
countnum++;
}elseif(array[i]>
a'
z'
counta++;
A'
Z'
countA++;
}elseif((array[i]>
=0x21&
=0x2F)||(array[i]>
=0x3A&
=0x40)||(array[i]>
=0x5B&
=0x60)||(array[i]>
=0x7B&
=0x7E)){
countSymbol++;
}else{
formaterror"
return;
//字母
if(counta==0&
countA==0){
sum=sum;
}elseif((counta>
0&
countA==0)||(counta==0&
countA>
0)){
}elseif(counta>
sum+=20;
//符号
if(countSymbol==0){
}elseif(countSymbol==1){
}else{
//数字
if(countnum==0){
}elseif(countnum==1){
//奖励
if((countA>
counta==0&
countnum>
countSymbol==0)||(counta>
countA==0&
countSymbol==0)){
sum+=2;
}elseif((countA>
countSymbol>
0)||(counta>
sum+=3;
}elseif(countA>
counta>
//评分
if(sum>
sum<
25){
very_weak"
}elseif(sum>
=25&
50){
weak"
=50&
60){
average"
=60&
70){
strong"
=70&
80){
very_stong"
=80&
90){
secure"
=90){
very_secure"
9.功能:
求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
publicstaticvoidmethod2(byteb){
inti=b;
intsum=0;
while(i>
i=i&
(i-1);
sum++;
10.
其实就是求最长回文数,
把初始数组反转,用两个for循环分别循环两个数组,如A:
12abba,反转后B:
abba21,从A0
(1)开始对比,B(0)不想等、比B
(1)、比B
(2)…如果相等则A和B都向后移1,再比较。
再从B
(1)开始,和之前一样比。
publicstaticchar[]sw(char[]array){
intn=array.length/2;
chartemp=0;
n;
array[i]=array[array.length-1-i];
array[array.length-1-i]=temp;
returnarray;
publicstaticintmethod(char[]array1,char[]array2){
intcount=0,max=0,index1=0,index2=0;
i<
array1.length;
for(intj=0;
j<
array2.length;
index1=i;
index2=j;
while((index1<
array1.length)&
(index2<
array2.length)&
(array1[index1]==array2[index2])){
index1++;
index2++;
if(count>
max){
max=count;
count=0;
returnmax;
Stringstr="
12abba21w"
;
char[]array1=str.toCharArray();
char[]array2=sw(str.toCharArray());
System.out.println(method(array1,array2));
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华为 OJ 答案 java 题目
![提示](https://static.bdocx.com/images/bang_tan.gif)